umgehen Ich habe @Fabrico PH Antwort in this question lesen, um eine Toggle-Taste auf ActionBar zu machen.Kann nicht mit Toggle Button auf Actionbar
Dann habe ich seinen 2. Weg versucht, es zu tun. Es wird in der Aktionsleiste angezeigt, aber ich kann kein Attribut darauf setzen.
Dies ist mein Code:
main_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:radastaff="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/gps_toggle"
android:title="GPS Toggle"
radastaff:showAsAction="always"
radastaff:actionLayout="@layout/actionbar_layout_toggle"
/>
</menu>
-Layout für diesen Menüpunkt:
action_bar_layout_toggle.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<ToggleButton
android:id="@+id/actionbar_gps_toggle"
android:layout_width="71dp"
android:layout_height="30dp"
android:textOn=""
android:textOff=""
android:background="@drawable/gps_status_png"
android:layout_marginRight="20dp"/>
</RelativeLayout>
In MainActivity.java -> onCreate(), ich habe einen ToggleButton wie folgt aufgerufen, aber es hat findviewbyId() null object angegeben.
ToggleButton toggle = (ToggleButton)findViewById(R.id.actionbar_gps_toggle);
toggle.setChecked(true);
Logcat:
07-21 17:03:25.926 8914-8914/com.rada.radastaff E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.rada.radastaff, PID: 8914
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.rada.radastaff/com.rada.radastaff.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ToggleButton.setChecked(boolean)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2316)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2376)
at android.app.ActivityThread.access$800(ActivityThread.java:147)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5253)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.ToggleButton.setChecked(boolean)' on a null object reference
at com.rada.radastaff.MainActivity.onCreate(MainActivity.java:20)
at android.app.Activity.performCreate(Activity.java:5975)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2269)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2376)
at android.app.ActivityThread.access$800(ActivityThread.java:147)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1281)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5253)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
Vielen Dank im Voraus.
'erhalten sollte, aber es sagte findViewById() null object.' Könnten Sie bitte den genauen Fehler von logcat posten? – Bobby
Ich habe den Logcat aktualisiert. Vielen Dank. – TruongHieu