我的应用程序只是在尝试运行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();
}
}
答案 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);
如果你用这两个代替你的代码,你应该好好去!
希望这有帮助!