0

私のアプリケーションは、alertdialogを実行しようとするたびにクラッシュします。私はこれらを行う適切な方法ではないが、私がやっているのは、AlertDialogを作成するためのメソッドpopup()が含まれているAboutActivityというJavaクラスを作成することです。私の主な活動では、私はオブジェクトを作成してメソッドを呼び出しています。AlertDialogアプリケーションがクラッシュする

AboutActivityの 'ポップアップ()':

public class AboutActivity extends DialogFragment 
{ 
    public void popup() 
    { 
     new AlertDialog.Builder(getActivity()) 
       .setIcon(android.R.drawable.ic_dialog_alert) 
       .setTitle("About Us") 
       .setMessage("Blah Blah Blah") 
       .setCancelable(true) 
       .setPositiveButton("Ok", null) 
       .show(); 
    } 
} 

主な活動:

public boolean onOptionsItemSelected(MenuItem item) { 
     switch(item.getItemId()){ 
      case R.id.nav_About:{ 
       AboutActivity about = new AboutActivity(); 
       about.popup(); 
      } 
} 
+0

アプリがクラッシュするので、logcatを共有してください –

+0

また、AboutActivityは実際には断片なので、命名規則に従ってください。 –

+0

どこでlogcatを見つけることができますか? –

答えて

0

新ブランドのための割り当てられていないですが、私はあなたのgetActivity()がnullであるからだと推測していることです。それをあなたの方法の中に入れたいのであれば、そこであなたの活動を渡すだけです。

AboutActivityの 'ポップアップ()':

public class AboutActivity extends DialogFragment { 
    public void popup(Activity activity) { 
    new AlertDialog.Builder(activity) 
    .setIcon(android.R.drawable.ic_dialog_alert) 
    .setTitle("About Us") 
    .setMessage("Blah Blah Blah") 
    .setCancelable(true) 
    .setPositiveButton("Ok", null) 
    .show(); 
    } 
} 

主な活動:すべての

public boolean onOptionsItemSelected(MenuItem item) { 
    switch(item.getItemId()){ 
    case R.id.nav_About:{ 
     AboutActivity about = new AboutActivity(); 
     about.popup(this); 
    } 
} 
+0

これは私のために働いてくれてありがとう、しかし、 '主な活動'のバージョンでは 'this'は 'about.popup()'にあるべきです –

+0

はいあなたが正しいです、それはそこに渡されるべきです。編集しました。 – Kia

0

主な活動:

ただ、そこにダイアログを作成...ありそれをロードするだけの断片を持っていることのない点

new AlertDialog.Builder(MainActivity.this) 
      .setIcon(android.R.drawable.ic_dialog_alert) 
      .setTitle("About Us") 
      .setMessage("Blah Blah Blah") 
      .setCancelable(true) 
      .setPositiveButton("Ok", null) 
      .show(); 

あなたの問題はgetActivity()はlogcatを送信し、未結合の断片

+0

私の先生は具体的に質問します。「AboutActivity」でダイアログボックスを実装します。 –

+0

「AboutActivity "アクティビティではないので、私はあなたが間違っているいくつかの指示に従ったかもしれないと思います –

0

まずこれを使用して警告ダイアログのコードを置き換える:

new AlertDialog.Builder(AboutActivity.this) 
      .setIcon(android.R.drawable.ic_dialog_alert) 
      .setTitle("About Us") 
      .setMessage("Blah Blah Blah") 
      .setCancelable(true) 
      .setPositiveButton("Ok", null) 
      .show(); 

をこれは常に動作します私にとってあなたの問題はあなたが文脈ではないかもしれないgetActivity()を使用しているかもしれないと思います。上記の例のようにAboutActivity.thisを使用してください。

第2に、私が正しいとすれば、MainActivityからAboutActivityに行きたいと思っているので、意図を使用する必要があります。あなたはこれらの2を使用してコード交換した場合は、あなたが行くために良いことがあり

Intent intent = new Intent(getApplicationContext(), AboutActivity.class); 
startActivity(intent); 

:これで

AboutActivity about = new AboutActivity(); 
about.popup(); 

はこれを交換してください!

希望すると便利です。

関連する問題