AlertDialog崩溃应用程序

时间:2017-04-13 00:56:31

标签: java android android-activity alertdialog android-alertdialog

我的应用程序只是在尝试运行alertdialog时崩溃。我不确定正确的方法来做这些,但我正在做的是,创建一个名为' AboutActivity'其中包含方法' popup()'理想情况下,创建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();
            }
}

3 个答案:

答案 0 :(得分: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()未分配给全新的,未附加的片段

答案 1 :(得分: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);
  }
}

答案 2 :(得分: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

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

替换它:

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

用这个:

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

如果你用这两个代替你的代码,你应该好好去!

希望这有帮助!