package com.example.test3;
import java.util.HashMap;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DialogFragment;
import android.app.FragmentManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class Test3 extends Activity {
Button testShowPinDialogButton;
public AlertDialog alertCreate;
AlertDialog.Builder alert;
private HashMap<String, Boolean> pinDialogState;
EditText input;
Context context;
private String tag = "Test3";
private String click1 = "click1";
private SharedPreferences sharedPreferences;
private SharedPreferences.Editor editor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test3);
context = this;
sharedPreferences = getPreferences(MODE_PRIVATE);
editor = sharedPreferences.edit();
testShowPinDialogButton = (Button) findViewById(R.id.testShowPinDialogBbutton);
testShowPinDialogButton.setOnClickListener(showPinDialog);
pinDialogState = new HashMap<String, Boolean>();
Log.d(tag, "onCreate()");
}
private OnClickListener showPinDialog = new OnClickListener() {
@Override
public void onClick(View v) {
launchDialog();
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_test3, menu);
return true;
}
protected void launchDialog() {
alert = new AlertDialog.Builder(context);
alert.setTitle("Title");
alert.setMessage("Message");
alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
alert.setNegativeButton("Cancel",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.dismiss();
pinDialogState.put("click1", false);
}
});
Log.d(tag, "launchDialog()");
alertCreate = alert.create();
alertCreate.show();
}
@Override
protected void onPause() {
super.onPause();
Log.d(tag, "onPause()");
if (alertCreate != null) {
alertCreate.dismiss();
editor.putBoolean(click1, true);
}
}
@Override
protected void onRestart() {
super.onRestart();
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.d("Test3", "onResume()");
alertCreate.show();
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("Test3", "onDestroy()");
}
}
我正在努力解决在从onPause()中解除之后如何重新显示我的警告对话框的逻辑。我正在考虑共享首选项,但我怎么知道在活动被销毁之前对话框正在显示,现在用户又回到应用程序中,我必须显示对话框。我也听说过,在销毁活动后,简单地调用alertDialog.show()将不起作用。我能做什么?谢谢。
答案 0 :(得分:2)
也许Crouton工作,我不知道,但尝试:
http://www.grokkingandroid.com/useful-android-libraries-crouton/
Crouton是Nofitication Library,简单,方便,快捷!
答案 1 :(得分:1)
您正好使用共享偏好设置。
在onPouse()
方法中,将您的提醒消息保存为标记并将其打开onResume()
:
public class Test3 extends Activity {
....
SharedPreferences mPrefs = context.getSharedPreferences("MyPrefs", 0);
....
@Override
protected void onPause() {
super.onPause();
Log.d(tag, "onPause()");
SharedPreferences.Editor editor = mPrefs.edit();
editor.putBoolean("isShowed", alertCreate );
editor.commit();
if (alertCreate != null) {
alertCreate.dismiss();
editor.putBoolean(click1, true);
}
}
....
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
Log.d("Test3", "onResume()");
boolean isShow = mPrefs.getBoolean("isShowed", false);
if(isShow == true){
alertCreate.show();
.....
}
}
}