我知道这是一个愚蠢的问题,但我不知道为什么会这样。 这是我的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Button button = (Button)findViewById(R.id.button2);
button.setText("Blabla");
setContentView(R.layout.activity_aiueo);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
}
片段XML:
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Next"
android:layout_weight="1"
android:onClick="next" />
我只是想在开始活动时更改文字,但它会导致我的应用崩溃。
logcat的
06-23 15:42:05.396: E/AndroidRuntime(13039): FATAL EXCEPTION: main
06-23 15:42:05.396: E/AndroidRuntime(13039): Process: com.shinway.hiragana, PID: 13039
06-23 15:42:05.396: E/AndroidRuntime(13039): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.shinway.hiragana/com.shinway.hiragana.table.Aiueo}: java.lang.NullPointerException
06-23 15:42:05.396: E/AndroidRuntime(13039): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2215)
06-23 15:42:05.396: E/AndroidRuntime(13039): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2265)
06-23 15:42:05.396: E/AndroidRuntime(13039): at android.app.ActivityThread.access$800(ActivityThread.java:145)
06-23 15:42:05.396: E/AndroidRuntime(13039): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1206)
06-23 15:42:05.396: E/AndroidRuntime(13039): at android.os.Handler.dispatchMessage(Handler.java:102)
06-23 15:42:05.396: E/AndroidRuntime(13039): at android.os.Looper.loop(Looper.java:136)
06-23 15:42:05.396: E/AndroidRuntime(13039): at android.app.ActivityThread.main(ActivityThread.java:5144)
06-23 15:42:05.396: E/AndroidRuntime(13039): at java.lang.reflect.Method.invokeNative(Native Method)
06-23 15:42:05.396: E/AndroidRuntime(13039): at java.lang.reflect.Method.invoke(Method.java:515)
06-23 15:42:05.396: E/AndroidRuntime(13039): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
06-23 15:42:05.396: E/AndroidRuntime(13039): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:611)
06-23 15:42:05.396: E/AndroidRuntime(13039): at dalvik.system.NativeStart.main(Native Method)
06-23 15:42:05.396: E/AndroidRuntime(13039): Caused by: java.lang.NullPointerException
06-23 15:42:05.396: E/AndroidRuntime(13039): at com.shinway.hiragana.table.Aiueo.onCreate(Aiueo.java:37)
06-23 15:42:05.396: E/AndroidRuntime(13039): at android.app.Activity.performCreate(Activity.java:5231)
06-23 15:42:05.396: E/AndroidRuntime(13039): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
06-23 15:42:05.396: E/AndroidRuntime(13039): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2169)
06-23 15:42:05.396: E/AndroidRuntime(13039): ... 11 more
没有settext代码。其他一切都很好。谢谢你的帮助。
答案 0 :(得分:5)
更改订单
setContentView(R.layout.activity_aiueo);
Button button = (Button)findViewById(R.id.button2);
button.setText("Blabla");
您应首先setContentView(R.layout.activity_aiueo);
,然后参考Button
查看
并确保您在button2
布局中使用 ID activity_aiueo
按钮。
答案 1 :(得分:0)
setContentView(R.layout.activity_aiueo);
Button button = (Button)findViewById(R.id.button2);
button.setText("Blabla");
声明按钮并在setcontentView()解决崩溃问题后使用它来设置文本
答案 2 :(得分:0)
如果您为不同的屏幕尺寸设计了多个布局文件,则必须将其命名为相同的ID。如果id不匹配,就会发生这种情况。
例如
public class HelloAndroidActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView t=(TextView)findViewById(R.id.textView1);
t.setText("Secoknd text to display!");
}
}
布局/ main.xml中
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="38dp"
android:editable="true"
android:text="TextView" />
布局-大HDPI / main.xml中
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="38dp"
android:editable="true"
android:text="TextView" />
如果你在ldpi手机上运行它可以工作。但如果你在hdpi手机上运行它找不到id textView1。所以你的应用程序停止工作。