我面臨的問題是當包含以下語句時,我的應用程序在啓動時崩潰並出現上述錯誤。LinearLayout無法投射到android.widget.checkbox
external= (CheckBox) menu.findItem(R.id.location).getActionView();
與該語句的代碼塊是
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// TODO Auto-generated method stub
new MenuInflater(this).inflate(R.menu.actions,menu);
Log.d("Action","inflated");
external= (CheckBox) menu.findItem(R.id.location).getActionView(); <<<error
Log.d("Action","external initialized");
return super.onCreateOptionsMenu(menu);
}
外部是聲明爲
private CheckBox external=null;
同一類的數據成員被充氣的菜單是:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/location"
android:actionLayout="@layout/action_location"
android:showAsAction="never">
</item>
<item
android:id="@+id/save"
android:title="Save"
android:showAsAction="always">
</item>
<item
android:id="@+id/saveBackground"
android:showAsAction="always|withText"
android:title="in BG">
</item>
如果該特定行被註釋掉,該應用程序啓動就好了。可能是什麼問題 ?
[更新]這裏的action_location.xml內容
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<CheckBox
android:id="@+id/external"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:title="@string/external"
/>
</LinearLayout>
後action_location.xml – Blackbelt
@blackbelt:我剛剛張貼的額外的代碼... – user2499998
它是正確的ClassCastException異常。 getActionView返回此菜單項的當前設置的操作視圖 – Blackbelt