Java “获取编辑文本值”对话框中显示的编辑文本值

Java “获取编辑文本值”对话框中显示的编辑文本值,java,android,Java,Android,是否可以从EditText获取用户输入文本并在AlertDialog中显示?主要活动提示用户设置警报,然后输入一条消息,在警报响起后显示。我希望能够显示用户在AlertDialog中键入的任何消息 MainActivity.java public class MainActivity extends Activity{ TimePicker picker; DatePicker datepicker; EditText editText; @Override

是否可以从EditText获取用户输入文本并在AlertDialog中显示?主要活动提示用户设置警报,然后输入一条消息,在警报响起后显示。我希望能够显示用户在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);

    }

}
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());

    }

} 
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();

    }

}
AlarmBroadcastReceiver.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);

    }

}
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());

    }

} 
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();

    }

}
ShowDialog.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);

    }

}
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());

    }

} 
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,但不会显示用户输入的消息。我试着获取值并将它们放入字符串中,但这不起作用。有什么想法吗?

尝试从Dialog类创建您自己的对话框,并将此消息添加到构造函数。

将此消息作为额外消息添加到alarm PendingEvent:

Intent intent = new Intent(this, AlarmBoadcastReceiver.class);
intent.putExtra("message", yourMessageString);
AlarmBoadcastReceiver
onReceive
方法中获取字符串

yourMessageString = intent.getExtras().getString("message","No message");
showNotification
中,将该字符串作为额外字符串添加到
pendingent

intent = new Intent(context, ShowDialog.class);    
intent.putExtra("message", yourMessageString);
PendingIntent contentintent = PendingIntent.getActivity(context, 0, intent, 0);  
ShowDialog
onCreate
方法上获取额外的意图:

userMessage = getIntent().getExtras().getString("message","No message");  
然后将该消息设置为
AlertDialog

alertDialogBuilder.setMessage(userMessage)

我不想回答自己的问题,但我接受了@StarsSky给出的建议,并使用共享首选项存储和检索要在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);
接收

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);

您可以将文本字符串存储在共享文件中preference@StarsSky我尝试了这个方法,它保存了字符串,但不显示在AlertDialogy中,您不需要使用SharedReferences。我觉得最好是把信息传给别人。请看我的答案。假设用户创建了两个警报,是否有错误消息?我直接写在答题箱里!请编辑您的问题并发布您编写的代码。