2014-01-06 2 views
0

EditText에서 사용자 입력 텍스트를 가져 와서 AlertDialog에 표시 할 수 있습니까? 주 활동은 사용자에게 경보를 설정하고, 경보가 울리면 나중에 표시 할 메시지를 입력하라는 메시지를 표시합니다. 사용자가 AlertDialog에 입력 한 메시지를 표시 할 수 있어야합니다.EditText 값 표시 AlertDialog

MainActivity.java

public class MainActivity extends Activity{ 

    TimePicker picker; 
    DatePicker datepicker; 
    EditText editText; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.settings, menu); 
     return true; 

    } 

    public void setAlarm(View view) { 
     picker = (TimePicker)findViewById(R.id.timePicker1); 
     datepicker = (DatePicker)findViewById(R.id.datePicker1); 

     Calendar AlarmCal = Calendar.getInstance(); 

     Intent intent = new Intent(this, AlarmBoadcastReceiver.class); 
     PendingIntent pendingintent = PendingIntent.getBroadcast(this.getApplicationContext(), 9988, intent, 0); 

     AlarmCal.setTimeInMillis(System.currentTimeMillis()); 
     AlarmCal.set(Calendar.HOUR_OF_DAY, picker.getCurrentHour()); 
     AlarmCal.set(Calendar.MINUTE, picker.getCurrentMinute()); 
     AlarmCal.set(Calendar.DATE, datepicker.getDayOfMonth()); 
     AlarmCal.set(Calendar.YEAR, datepicker.getYear()); 

     AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 
     alarmManager.set(AlarmManager.RTC_WAKEUP, AlarmCal.getTimeInMillis(), pendingintent); 

    } 

} 

AlarmBroadCastReciever.java

public class AlarmBoadcastReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(Context context, Intent intent) { 

     showNotification(context); 

     Vibrator vibrator = (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE); 
     vibrator.vibrate(1000); 

    } 

    private void showNotification(Context context) { 

     PendingIntent contentintent = PendingIntent.getActivity(context, 0, new Intent(context, ShowDialog.class), 0); 

     NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context) 
     .setSmallIcon(R.drawable.ic_notif) 
     .setContentTitle("Reminder") 
     .setContentText("Click Here To View Message"); 

     mBuilder.setContentIntent(contentintent); 
     mBuilder.setAutoCancel(true); 

     NotificationManager mNotificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE); 
     mNotificationManager.notify(1, mBuilder.build()); 

    } 

} 

ShowDialog.java

public class ShowDialog extends Activity { 

    final Context context = this; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_show_dialog); 

     showDialog(); 

    } 

    void showDialog() { 

     AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(context); 

     alertDialogBuilder.setTitle("Message"); 

     alertDialogBuilder 
      .setMessage("message") 
      .setPositiveButton("OK", new DialogInterface.OnClickListener() { 

       @Override 
       public void onClick(DialogInterface dialog, int which) { 
        ShowDialog.this.finish(); 
        closeApp(); 

       } 
      }); 

     AlertDialog alertDialog = alertDialogBuilder.create(); 

     alertDialog.show(); 

    } 

} 

알림을 클릭하면 AlertDialog가 나타나지만 사용자가 입력 한 메시지에는 나타나지 않습니다. 필자는 값을 가져 와서 문자열에 넣으려고했지만 그다지 효과가 없습니다. 어떤 아이디어?

+1

당신은 내가이 시도 공유 선호 – StarsSky

+0

@StarsSky에서 텍스트 문자열을 저장할 수 있습니다받을 수 있으며 문자열을 저장하지만이 시도에 AlertDialog – saurusrexx

답변

0

Dialog 클래스에서 확장 한 자체 대화 상자를 생성하고이 메시지를 생성자에 추가하십시오. pendingintent에 엑스트라로 그 문자열을 추가

Intent intent = new Intent(this, AlarmBoadcastReceiver.class); 
intent.putExtra("message", yourMessageString); 

showNotification에서 AlarmBoadcastReceiveronReceive 방법

yourMessageString = intent.getExtras().getString("message","No message"); 

에서 문자열을 가져옵니다 :

0

알람 pendingIntent에 엑스트라로 메시지를 추가
intent = new Intent(context, ShowDialog.class);  
intent.putExtra("message", yourMessageString); 
PendingIntent contentintent = PendingIntent.getActivity(context, 0, intent, 0); 
userMessage = getIntent().getExtras().getString("message","No message"); 

그런 다음 AlertDialog 난 내 자신의 질문에 대답하기 싫어

alertDialogBuilder.setMessage(userMessage) 
+0

에 표시되지 않으며하지 않았다 작업. – saurusrexx

+0

오류 메시지가 있습니까? 나는 답장에 이것을 직접 썼다! 질문을 수정하고 작성한 코드를 게시하십시오. – ramaral

0

에 그 메시지를 설정하지만 난에 공유 기본 설정을 조언 @StarsSky 준 가져다 사용 : ShowDialogonCreate 방법에 (210)는 의도 여분을 얻을 저장하고

퇴피에 AlertDialog에 표시 할 메시지를 검색
SharedPreferences.Editor editor = getSharedPreferences(null, MODE_PRIVATE).edit(); 
     editor.putString("text", editText.getText().toString()); 
     editor.commit(); 

SharedPreferences prefs =getSharedPreferences(null, MODE_PRIVATE); 
     String text = prefs.getString("text", null); 
+0

SharedPreferences를 사용할 필요가 없습니다. 나는 메시지를 의도적으로 전달하는 것이 더 낫다. 내 대답을 참조하십시오. – ramaral

+0

사용자가 두 개의 경보를 생성한다고 가정합니다 – ramaral