0

我的应用程序只是在它试图运行alertdialog时崩溃。我不确定正确的做法,但我正在做的是创建一个名为'AboutActivity'的Java类,它包含方法'popup()',理想地创建AlertDialog。在我的主要活动中,我正在创建对象并调用方法。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

发送logcat的,但我想这是因为你的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

这对我工作感谢,但在你的'主要活动'版本'这'应该在'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()是未分配一个全新的,独立的片段

+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就像我在上面的例子中所做的那样。

其次,如果我是正确的,您正试图从MainActivity转到AboutActivity,所以您需要使用意图。

替换此:

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

与此:

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

如果您更换这两个代码,你应该是好去!

希望这会有所帮助!