2011-10-13 46 views
0

我正在开发一个Android应用程序,此应用程序有十几个活动,每个活动都用于相应的屏幕。现在我在屏幕顶部有这个共同的字幕栏。 这个字幕栏有一个按钮,显示一个警告对话框,显示链接列表以转到不同的屏幕。将此传递给外部类,并从Android的alertdialog列表中启动活动

我可以写一个相同的功能,每次活动都打电话警告对话框中,但是这将是乏味的,如果我要修改它们,所以我创建这个类:

public class MenuAlertDialog extends Activity { 

/* 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
} 
*/ 
public void createMenu(final Context context){ 
    AlertDialog.Builder dlg = new AlertDialog.Builder(context); 
    dlg.setTitle("menu"); 

    String[] items = {"pageA", "pageB", "pageC", "pageD", "pageE"}; 
    dlg.setItems(items, new DialogInterface.OnClickListener(){ 
     @Override 
     public void onClick(DialogInterface dialog, int which){ 
      switch(which){ 
      case 0: 
       Intent intent = new Intent(context, MainActivity.class); 
       startActivity(intent); 
       break; 
      default: 
       break; 

      } 
     } 
    }); 
    dlg.show(); 
} 
} 

,并从每个活动叫它,像这样:

MenuAlertDialog menu = new MenuAlertDialog(); 
menu.createMenu(this); 

from onCreate内部。

它可以显示alertDialog,但是无论何时按下pageA链接,它都会失败并出现意外错误。

logcat的说,它的一个nullpointererror和原因似乎

startActivity(intent); 

我在做什么错?

+0

意向意图=新意图(背景下,MainActivity.class)更换;在上面的代码上下文中的 是空的,这是原因。 –

+0

嗯,与你的问题无关,但你为什么要将你的课程扩展为活动?如果你在上面发布的内容是该类中的所有内容,那么使用任何东西来扩展该类是完全多余的。 – dymmeh

+0

Android_Crazy感谢您的快速响应!你能否告诉我我该如何解决?请。 – Kou

回答

1

删除代码

extends Activity 

当你调用startActivity(intent);

context.startActivity(intent); 
+0

谢谢!你解决了我的问题! – Kou

1

您应该将类​​更改为“扩展对话框”而不是“活动”。 也试试这个:

查看本教程如何创建自定义对话框。 Custom Dialog ,你有没有需要扩展类正在创建因为它不依赖于任何活动相关的功能也在这里Another TutorialHere

+0

也尝试从(最终上下文上下文) –

+0

谢谢你的建议Coder_For_Life22,但它仍然给我错误...我试图将超类从活动更改为对话框,但如果我这样做,startActivity将无法正常工作。 .. – Kou

+0

看看我的编辑。我发布了完整的教程,可以解决您的问题,并将您放在正确的路径上,以创建上面需要的对话框。 –

相关问题