【问题标题】:Changing setConetentView with setOnClickListener causes program to crash (NullPointerException)使用 setOnClickListener 更改 setConetentView 会导致程序崩溃 (NullPointerException)
【发布时间】:2014-11-12 11:03:46
【问题描述】:

所以我的程序运行良好,直到我想添加我的“主菜单”。我想在我的主菜单上按下一个按钮,然后让它进入“start_board”,所以这就是我基本上做的新的。如果我没有提供足够的信息,请告诉我,我对编程很陌生。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mainmenu);  

    Button splayButton = (Button) findViewById(R.id.splay);

    splayButton.setBackgroundColor(Color.TRANSPARENT);

    splayButton.setOnClickListener(new View.OnClickListener(){
        public void onClick(View v) {
            setContentView(R.layout.start_board);

        //code, code and more code

        }
    }); 
}

主菜单 XML

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/mainmenu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/mainmenu" >

<Button
    android:id="@+id/splay"
    android:layout_width="195dp"
    android:layout_height="64dp"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true" />

</RelativeLayout>

LogCat

11-12 11:41:21.272: E/AndroidRuntime(22244): FATAL EXCEPTION: main
11-12 11:41:21.272: E/AndroidRuntime(22244): Process: com.gerfort.gerfortrps, PID: 22244
11-12 11:41:21.272: E/AndroidRuntime(22244): java.lang.NullPointerException
11-12 11:41:21.272: E/AndroidRuntime(22244):    at com.gerfort.gerfortrps.MainActivity$4.onClick(MainActivity.java:185)
11-12 11:41:21.272: E/AndroidRuntime(22244):    at android.view.View.performClick(View.java:4637)
11-12 11:41:21.272: E/AndroidRuntime(22244):    at     android.view.View$PerformClick.run(View.java:19422)
11-12 11:41:21.272: E/AndroidRuntime(22244):    at     android.os.Handler.handleCallback(Handler.java:733)
11-12 11:41:21.272: E/AndroidRuntime(22244):    at android.os.Handler.dispatchMessage(Handler.java:95)
11-12 11:41:21.272: E/AndroidRuntime(22244):    at android.os.Looper.loop(Looper.java:136)
11-12 11:41:21.272: E/AndroidRuntime(22244):    at android.app.ActivityThread.main(ActivityThread.java:5586)
11-12 11:41:21.272: E/AndroidRuntime(22244):    at java.lang.reflect.Method.invokeNative(Native Method)
11-12 11:41:21.272: E/AndroidRuntime(22244):    at java.lang.reflect.Method.invoke(Method.java:515)
11-12 11:41:21.272: E/AndroidRuntime(22244):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268)
11-12 11:41:21.272: E/AndroidRuntime(22244):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084)
11-12 11:41:21.272: E/AndroidRuntime(22244):    at dalvik.system.NativeStart.main(Native Method)

有什么想法吗?提前致谢!

【问题讨论】:

  • 你需要使用另一个Activity,而不是改变当前on的内容。看看一些教程。
  • setContentView 一次调用而不是更多时间使用布局 id 并更改布局颜色
  • 好的,我会调查的。谢谢。
  • Naveen,我需要“start_board”上的所有东西,比如按钮等。

标签: android android-layout button nullpointerexception


【解决方案1】:

使用Fragments。并在用户按下按钮时使用事务来更改当前 UI

【讨论】:

  • 是的,可能会这样。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多