下次再showDialog( ) 時,就直接叫出cache 的 dialog,不會再 create 一次。
所以要是AlertDialog 第一次show和第二次 show 不一樣的 message。就沒有辦法。
即使每次 showDialog( ) 前都用 setMessage( ) 設定過不一樣的內容也沒效。
所以每個 message 都要寫一個 dialog ?
後來發現 android system 好像是以showDialog( id ) 的 id 作為 identify cached dialog 的依據。
所以 每次 call showDialog( ) 都傳入不同的 id,那麼 onCreateDialog( ) 就會每次都被呼叫。
這樣,就可以設定每次不一樣的 Alert Message 了。
package rtk.atp.testmcu;
import rtk.atp.testmcu.R;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
public class testmcu extends Activity {
private String dialogInfoString = "Test OK?";
public void buttonhandler(View view) {
switch (view.getId()) {
case R.id.btn_BacklightLevel1:
dialogInfoString = "Press OK";
showDialog(1);
break;
case R.id.btn_BacklightLevel2:
dialogInfoString = "Press Fail";
showDialog(2);
break;
}
}
protected Dialog onCreateDialog(int id) {
AlertDialog.Builder dlg = new AlertDialog.Builder(this);
dlg.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
setTitle("Confirmed");
}
});
dlg.setNegativeButton("Fail", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
setTitle("Canceled");
}
});
dlg.setMessage(dialogInfoString);
return dlg.create();
}
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
重點就在 showDialog(1), showDialog(2);可以看到實際上onCreateDialog( ) 並沒有參考 dialogid 來決定要顯示的內容。
沒有留言:
張貼留言