在我的Android應用程序中,我使用自定義工具欄,並且findViewById()
似乎無法找到工具欄。Android的findViewById爲工具欄返回null
我環顧了這個互聯網的所有類似問題,並沒有一個人似乎能夠工作。
我的屏幕總是返回吐司 「工具欄失敗...」
這裏是我的Java onCreate()
:
protected Toolbar toolbar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home);
toolbar = (Toolbar) findViewById(R.id.tool_bar);
if(toolbar != null) {
setSupportActionBar(toolbar);
} else {
Toast.makeText(Home.this, "Toolbar failed...", Toast.LENGTH_SHORT).show();
Toast.makeText(Home.this,"", Toast.LENGTH_SHORT).show();
}
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment()).commit();
}
Intent intent = getIntent();
String action = intent.getAction();
String type = intent.getType();
if (Intent.ACTION_SEND.equals(action) && type != null) {
if ("text/plain".equals(type)) {
handleSendText(intent); // Handle text being sent
}
}
}
這裏的XML佈局文件:
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true">
<android.support.v7.widget.Toolbar
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
android:elevation="4dp"
android:id="@+id/tool_bar"/>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/home"
android:layout_below="@id/tool_bar"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Your Scripture:"
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_below="@+id/textView2"
android:layout_alignParentLeft="true" />
<TextView
android:id="@+id/scripturecontainer"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="You have not selected a scripture yet..."
android:textAppearance="?android:attr/textAppearanceSmall"
android:layout_below="@+id/textView1"
android:layout_alignParentLeft="true" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="trywidget"
android:text="Try the Widget"
android:layout_below="@+id/scripturecontainer"
android:layout_alignParentLeft="true" />
<Button
android:id="@+id/widget_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="change"
android:text="Select A Scripture"
android:layout_below="@+id/button2"
android:layout_alignParentLeft="true" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="suggest"
android:text="Suggest A Feature"
android:layout_below="@+id/widget_button"
android:layout_alignParentLeft="true" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="wallpaper"
android:text="Change the Wallpaper"
android:layout_below="@+id/button3"
android:layout_alignParentLeft="true" />
</RelativeLayout>
<ListView android:id="@+id/left_drawer"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@android:color/transparent"
android:dividerHeight="0dp"
android:background="#111"/>
</android.support.v4.widget.DrawerLayout>
這是我的風格的XML file:
<resources>
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!--
Theme customizations available in newer API levels can go in
res/values-vXX/styles.xml, while customizations related to
backward-compatibility can go here.
-->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<!-- All customizations that are NOT specific to a particular API-level can go here. -->
</style>
</resources>
這並不似乎是你設置爲'Activity'佈局,因爲它不」沒有一個'ViewGroup',ID爲'container',而且'FragmentTransaction'在第一次運行時會導致崩潰。 –
它不會崩潰。只是返回一個null。 –
我不知道你的意思是「返回null」,但是如果當前佈局沒有'container',那麼'FragmentTransaction'會崩潰。鑑於此,''findViewById()'爲'Toolbar'返回'null'的事實,我會說你發佈的佈局不是'activity_home'。 –