xoc*_*chn 1 java android nullpointerexception android-intent android-activity
大家好,我是 Android 新手,我正在尝试创建一个出现在所有活动中的底部菜单。因此,我在 xml 布局中创建了菜单,并将其附加到我的应用程序的布局中,使用
\n\n <include android:layout_width="fill_parent" layout="@layout/menu"\n android:layout_height="wrap_content" />\n
Run Code Online (Sandbox Code Playgroud)\n\n现在我想将此布局链接到一个类,该类将包含启动活动并更改活动菜单的颜色...
\n\n问题是当我在其他类中使用 Intent 打开活动时,(menu.class)
我得到了NullPointerException
我已经在 AndroidManifest.xml 中添加了活动。我能够在主类(MainActivity.class)中启动新活动,但是当我尝试在菜单类中执行此操作时,我得到 NullPointerException。
\n\n这是我的代码:
\n\npublic class MainActivity extends ActionBarActivity {\n @Override\n protected void onCreate(Bundle savedInstanceState) {\n super.onCreate(savedInstanceState);\n setContentView(R.layout.activity_main);\n\n menu m = new menu((LinearLayout) findViewById(R.id.mn1),(LinearLayout) findViewById(R.id.mn2),\n (LinearLayout) findViewById(R.id.mn3),(LinearLayout) findViewById(R.id.mn4));\n m.btmmenu(new Intent(this, time.class));\n } }\n
Run Code Online (Sandbox Code Playgroud)\n\n菜单类:
\n\npublic class menu extends Activity {\n LinearLayout mn1,mn2,mn3,mn4;\n public menu(LinearLayout mn1,LinearLayout mn2,LinearLayout mn3,LinearLayout mn4) {\n this.mn1=mn1;\n this.mn2=mn2;\n this.mn3=mn3;\n this.mn4=mn4;\n }\n public void btmmenu(final Intent i) {\n mn4.setOnClickListener(new View.OnClickListener() {\n @Override\n public void onClick(View v) {\n startActivity(i);\n }\n });\n } }\n
Run Code Online (Sandbox Code Playgroud)\n\n我尝试在构造函数中发送意图我也尝试在菜单类中创建意图但我总是得到 NullPointerException
\n\n02-02 14:12:21.511 3319-3319/com.android.app E/AndroidRuntime\xef\xb9\x95 FATAL EXCEPTION: main\n java.lang.NullPointerException\n at android.app.Activity.startActivityForResult(Activity.java:3429)\n at android.app.Activity.startActivityForResult(Activity.java:3390)\n at android.app.Activity.startActivity(Activity.java:3600)\n at android.app.Activity.startActivity(Activity.java:3568)\n at com.xochn.okanime.menu$1.onClick(menu.java:21)\n at android.view.View.performClick(View.java:4191)\n at android.view.View$PerformClick.run(View.java:17229)\n at android.os.Handler.handleCallback(Handler.java:615)\n at android.os.Handler.dispatchMessage(Handler.java:92)\n at android.os.Looper.loop(Looper.java:137)\n at android.app.ActivityThread.main(ActivityThread.java:4960)\n at java.lang.reflect.Method.invokeNative(Native Method)\n at java.lang.reflect.Method.invoke(Method.java:511)\n at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)\n at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)\n at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)\n at dalvik.system.NativeStart.main(Native Method)\n
Run Code Online (Sandbox Code Playgroud)\n\n有人知道怎么做吗 ?
\n\n谢谢。
\n不要扩展 anActivity
并尝试使用 来创建它new
。这是行不通的。您需要有一个Context
才能调用该startActivity
方法。
我建议您进行以下更改:
View
或其子类而不是扩展Activity
. 这将使您在其构造函数中使用上下文作为参数并调用其super(context)
getContext().startActivity()
而不是startActivity
与 Intent 一起启动子进程Activity
归档时间: |
|
查看次数: |
11708 次 |
最近记录: |