Act 1、Act 2、Act 3 の 3 つのアクティビティがあります。Activity 1 では、ユーザーはタイトル、目的のイベントの説明、ユーザーに通知する日付と時刻を設定します。ユーザーが [DONE] ボタンをクリックすると、通知 ID がアクティビティ 2 に渡され、通知が表示されます。通知する時間になると、ユーザーがアクティビティ 1 で作成したイベントの詳細を示すアクティビティが表示されます。私の問題は、アクティビティ 3 に渡されたデータを表示する方法です。
これは私が取り組んでいるコードです:
アクティビティ 1:
//---Button view---
Button btnOpen = (Button) findViewById(R.id.button1);
btnOpen.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
timePicker = ( TimePicker ) findViewById( R.id.timePicker1 );
datePicker = ( DatePicker ) findViewById( R.id.datePicker1 );
title = (EditText) findViewById (R.id.editText1);
description = (EditText) findViewById (R.id.editText2);
//---use the AlarmManager to trigger an alarm---
AlarmManager alarmManager = ( AlarmManager ) getSystemService( ALARM_SERVICE );
//---get current date and time---
Calendar calendar = Calendar.getInstance();
//---sets the time for the alarm to trigger---
calendar.set( Calendar.YEAR, datePicker.getYear() );
calendar.set( Calendar.MONTH, datePicker.getMonth() );
calendar.set( Calendar.DAY_OF_MONTH, datePicker.getDayOfMonth() );
calendar.set( Calendar.HOUR_OF_DAY, timePicker.getCurrentHour() );
calendar.set( Calendar.MINUTE, timePicker.getCurrentMinute() );
calendar.set( Calendar.SECOND, 0 );
//---PendingIntent to launch activity when the alarm triggers---
Intent i = new Intent( NotifyActivity.this, DisplayNotification.class );
//---assign an ID of 1---
i.putExtra( "NotifID", 1 );
Intent d = new Intent( NotifyActivity.this, AlarmDetails.class );
d.putExtra( "Title", title.getText().toString() );
d.putExtra( "Description", description.getText().toString() );
PendingIntent displayIntent = PendingIntent.getActivity(
getBaseContext(), 0, i, 0 );
//---sets the alarm to trigger---
alarmManager.set( AlarmManager.RTC_WAKEUP,
calendar.getTimeInMillis(), displayIntent );
finish();
}
});
アクティビティ 2:
//---get the notification ID for the notification;
// passed in by the MainActivity---
int notifID = getIntent().getExtras().getInt( "NotifID" );
//---PendingIntent to launch activity if the user selects
// the notification---
Intent i = new Intent( DisplayNotification.this, AlarmDetails.class );
i.putExtra( "NotifID", notifID );
PendingIntent detailsIntent =
PendingIntent.getActivity(this, 0, i, 0);
NotificationManager nm = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
Notification notif = new Notification(
R.drawable.ic_launcher,
"iHealthFirst: Notification!",
System.currentTimeMillis());
CharSequence from = "AlarmManager - New Notification";
CharSequence message = "This is your alert, click to view";
notif.setLatestEventInfo(this, from, message, detailsIntent);
//---100ms delay, vibrate for 250ms, pause for 100 ms and
// then vibrate for 500ms---
notif.vibrate = new long[] { 100, 250, 100, 500};
nm.notify(notifID, notif);
//---destroy the activity---
finish();
}
およびアクティビティ 3:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.alarmdetails);
//---look up the notification manager service---
NotificationManager nm = ( NotificationManager )
getSystemService( NOTIFICATION_SERVICE );
//---cancel the notification---
nm.cancel( getIntent().getExtras().getInt( "NotifID" ) );
Bundle extras = getIntent().getExtras();
if(extras !=null)
{
String strTitle = extras.getString( "Title" );
String strDescription = extras.getString( "Description" );
title.setText( strTitle );
description.setText( strDescription );
}
}
アクティビティ3では、これを入れました
**Bundle extras = getIntent().getExtras();
if(extras !=null)
{
String strTitle = extras.getString( "Title" );
String strDescription = extras.getString( "Description" );
title.setText( strTitle );
description.setText( strDescription );
}**
しかし、詳細を表示できないようです。どんな助けでも本当に感謝しています。ありがとう。