0

昨日、これに似た質問をしましたが、コードをかなり変更したため、別の問題が発生しています。

5 秒後にトリガーされる保留中の意図を持つアラーム マネージャーを設定するトグル ボタンがあります。私はワンショット設定でそれを持っているので、メッセージを一度表示したいです (後でこれを日付値に実装します)。

このコードでエラーは発生しませんが、トースト メッセージを表示するインテントをトリガーできないようです。

xml で「DateAlarm」クラスのアクティビティを定義した方法を次に示します。

     <activity
        android:name=".DateAlarm"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="com.example.flybase2.DateAlarm" />
            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </activity>

アラーム マネージャーを使用したトグル ボタンのトグル ボタン onClick メソッドを次に示します。

case (R.id.toggleButton1):

    Integer dobMonth = setDate.getMonth();
    Integer dobYear = setDate.getYear();
    Integer dobDate = setDate.getDayOfMonth();

    Date set;
    set = new Date(dobYear - 1900, dobMonth, dobDate);


    AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(this, DateAlarm.class);
    PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
    am.set(AlarmManager.RTC_WAKEUP,System.currentTimeMillis() + (5 * 1000), pendingIntent); 


    break;

そして、インテントのアクションを保持する最後の「DateAlarm」クラス。

package com.example.flybase2;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.widget.Toast;

public class DateAlarm extends Activity {

Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

     Toast.makeText(context, "Appointment is today", Toast.LENGTH_LONG).show();
}

}

4

1 に答える 1

0

2 つの問題があります。

  1. 拡張するので、PendingIntent.getService()代わりに使用しています。PendingIntent.getActivity()DateAlarmActivityPendingIntent.getActivity()

  2. DateAlarmあなたのコンテキスト変数ではnullです。onCreate() では、初期化する必要があります。ActivityextendsであるためContext、この変数は必要ないことにも注意してください。ただし、その変数を使用したい場合は、次のようにします。


super.onCreate(savedInstanceState);
context = this;

また

Context context = this; //right from the global declaration
于 2013-01-19T16:11:52.950 に答える