2017-12-26 9 views
0

AlertDialogの表示時にアクティビティがリセットされています。
あなたは理由を伝えるために助けることができるAlertDialogの表示時にアクティビティがリセットされる

//creating the alert dialog 
final AlertDialog.Builder builder = new AlertDialog.Builder(this); 
builder.setCancelable(true) 
      .setNegativeButton("Close", new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialog, int id) { 
       //Action for close button 
        dialog.cancel(); 
       } 
      }); 

活動AlertDialogが表示されるとすぐにリセットされます:私は、Androidを学び、ここでは、このtutorial.

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    // Other Code 
    submitBtn = (Button) findViewById(R.id.submit_button); 
    // Other Code 
    submitBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v){ 
      AlertDialog alert = builder.create(); 
      alert.setMessage("Hello " + name); 
      alert.setTitle("Showing content in prompt window"); 
      alert.show(); 
      setContentView(R.layout.activity_main); 
     } 

を、次の午前

は私AlertDialogCodeですなぜアクティビティがリセットされていますか?

+1

この行を削除します。** setContentView(R.layout.activity_main); ** onclickメソッドから削除します。 – androidnoobdev

答えて

1

onCreateメソッドを呼び出すときは、コンテンツビューを1回だけ設定する必要があります。コードでは、すでに2行目にsetContentViewを設定しています。再度設定すると、アクティビティがリセットされ、イベントハンドラも削除されます。

2番目のsetContentViewを削除することをお勧めします。これはあなたが従うチュートリアルの問題でもあります。

alert.show(); 
//setContentView(R.layout.activity_main); // <-- Needs to be removed 
+0

はい、警告ダイアログが閉じられた後、 。 – Supriya

2

あなたが同じレイアウトでの活動のXMLビューをリセットしているので、

setContentView(R.layout.activity_main);

public void onClick(View v){ 
    AlertDialog alert = builder.create(); 
    alert.setMessage("Hello " + name); 
    alert.setTitle("Showing content in prompt window"); 
    alert.show(); 
    //setContentView(R.layout.activity_main); 
    //^^^^^^^^^^^^^^^^^^^^^^^^^^^^ remove 
} 
+0

ありがとう、私は今問題を理解しています。 – Supriya

+0

@Supriya私は、私が幸せなコーディングを助けることができるとうれしいです –

1

コメントやあなたに

 setContentView(R.layout.activity_main); 

行を削除する最初のコードを削除します。これはあなたの活動を強制的にリロードするためです。

+0

'あなたのアプリを再読み込みさせる'私はあなたがアクティビティまたは特にアクティビティのレイアウトを意味すると思います –

関連する問題