Android无法更改按钮文字

时间:2014-06-23 08:44:53

标签: android button crash

我知道这是一个愚蠢的问题,但我不知道为什么会这样。 这是我的代码:

@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代码。其他一切都很好。谢谢你的帮助。

3 个答案:

答案 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。所以你的应用程序停止工作。