التسجيل إلى قاعدة بيانات عندما ينقر المستخدم على عنصر واجهة مستخدم

StackOverflow https://stackoverflow.com/questions/2062958

سؤال

لدي عنصر واجهة مستخدم يعرض ساعة تمثيلية. ما أود هو أن تكتب عنصر واجهة المستخدم إلى قاعدة بيانات الوقت الذي ينقر فيه المستخدم على عنصر واجهة المستخدم. لقد حصلت بالفعل على فئة DatabaseHelper ولدي نشاط يعرض شاشة توضح التاريخ والوقت الحاليين وتكتب الوقت لقاعدة البيانات.

تابعت البرنامج التعليمي هنا: تعليمي على مدار الساعة التناظرية وانتهى به الأمر:

public void onReceive(Context context, Intent intent)
{
    String action = intent.getAction();
    if (AppWidgetManager.ACTION_APPWIDGET_UPDATE.equals(action))
    {
        RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
        this.mIntent = new Intent(context, AskTheTime.class);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, mIntent, 0);
        views.setOnClickPendingIntent(R.id.Widget, pendingIntent);

        AppWidgetManager.getInstance(context).updateAppWidget(intent.getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS), views);
    }
}

يمتد فئة AskTheTime النشاط والسجلات إلى قاعدة البيانات في onCreate (). ولكن هذا يعني أنه يعرض فقط الوقت الذي بدأت فيه القطعة - ليس عندما تم النقر عليه. (أعتقد أن هذا لأنني أبدأ بنتنتينت) لست متأكدًا مما إذا كان ينبغي علي وضع قاعدة البيانات في كتابة طريقة أخرى أو إذا كنت يجب أن أستخدم هذا النوع من الأشياء من الأدوات. إن أي مؤشرات ستكون كبيرة! لقد نظرت إلى العديد من البرامج التعليمية للنوايا ولكن لا يبدو أي منها واضحًا جدًا بالنسبة لي.

هل كانت مفيدة؟

المحلول

عند الضغط على عنصر واجهة المستخدم ، يقوم نظام التشغيل بتنشيط النية المعلقة التي تقوم بتعيينها على القطعة.

يبدو أنك تفتح نشاطًا AssTheTime عند الضغط على عنصر واجهة المستخدم.

لذا فإن المشكلة هي أن AskThetime قد يكون قد تم إنشاؤه بالفعل عند الضغط على عنصر واجهة المستخدم ، لذا فإن onCreate() لا يتم استدعاؤه مرة أخرى.

ما يمكنك فعله هو محاولة القيام بتسجيل الدخول onstart () أو onresume () بدلا من ، أو بالإضافة إلى ، onCreate() داخل الخاص بك activity.

من الوثائق بخصوص onStart:

يسمى عندما يصبح النشاط مرئيا للمستخدم.

و onresume:

يسمى متى سيبدأ النشاط في التفاعل مع المستخدم. عند هذه النقطة ، يكون نشاطك في أعلى مكدس النشاط ، مع إدخال المستخدم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top