我努力學習用書Android應用程序發展論壇傻瓜部分Android編程。本書中的一項任務是創建一個稱爲任務提醒的應用程序,該應用程序引入了Android碎片。據該書以下編碼件應創建第一個簡單的列表視圖:android.view.InflateException - Android應用研究與開發傻瓜
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
public class ReminderListActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.reminder_list);
}
}
與reminder_list看起來像這樣:
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:name="com.holtkoe.android.birthdaytimer.ReminderListFragment"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
類ReminderListFragment如下:
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.widget.ArrayAdapter;
import android.widget.ListAdapter;
public class ReminderListFragment extends ListFragment {
private ListAdapter mAdapter;
@Override
public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
String[] items = new String[] {"Foo","Bar","Fizz","Bin"};
mAdapter = new ArrayAdapter<String>(getActivity(), R.layout.reminder_row, R.id.text1, items);
setListAdapter(mAdapter);
}
}
最後reminder_row:
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:id="@+id/text1"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="10dp"/>
我想這兩個仿真設備,並在我的智能手機上運行這一點,但總是能得到以下
09-26 22:44:53.270: D/AndroidRuntime(2493): Shutting down VM
09-26 22:44:53.270: W/dalvikvm(2493): threadid=1: thread exiting with uncaught exception (group=0x412d8930)
09-26 22:44:53.290: E/AndroidRuntime(2493): FATAL EXCEPTION: main
09-26 22:44:53.290: E/AndroidRuntime(2493): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.holtkoe.android.birthdaytimer/com.holtkoe.android.birthdaytimer.ReminderListActivity}: android.view.InflateException: Binary XML file line #3: Error inflating class fragment
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2245)
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2299)
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.app.ActivityThread.access$700(ActivityThread.java:150)
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1280)
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.os.Handler.dispatchMessage(Handler.java:99)
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.os.Looper.loop(Looper.java:137)
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.app.ActivityThread.main(ActivityThread.java:5283)
09-26 22:44:53.290: E/AndroidRuntime(2493): at java.lang.reflect.Method.invokeNative(Native Method)
09-26 22:44:53.290: E/AndroidRuntime(2493): at java.lang.reflect.Method.invoke(Method.java:511)
09-26 22:44:53.290: E/AndroidRuntime(2493): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
09-26 22:44:53.290: E/AndroidRuntime(2493): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
09-26 22:44:53.290: E/AndroidRuntime(2493): at dalvik.system.NativeStart.main(Native Method)
09-26 22:44:53.290: E/AndroidRuntime(2493): Caused by: android.view.InflateException: Binary XML file line #3: Error inflating class fragment
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:710)
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.view.LayoutInflater.inflate(LayoutInflater.java:467)
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
09-26 22:44:53.290: E/AndroidRuntime(2493): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:364)
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.app.Activity.setContentView(Activity.java:1930)
09-26 22:44:53.290: E/AndroidRuntime(2493): at com.holtkoe.android.birthdaytimer.ReminderListActivity.onCreate(ReminderListActivity.java:14)
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.app.Activity.performCreate(Activity.java:5283)
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2209)
09-26 22:44:53.290: E/AndroidRuntime(2493): ... 11 more
09-26 22:44:53.290: E/AndroidRuntime(2493): Caused by: android.app.Fragment$InstantiationException: Trying to instantiate a class com.holtkoe.android.birthdaytimer.ReminderListFragment that is not a Fragment
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.app.Fragment.instantiate(Fragment.java:584)
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.app.Fragment.instantiate(Fragment.java:560)
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.app.Activity.onCreateView(Activity.java:4864)
09-26 22:44:53.290: E/AndroidRuntime(2493): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:686)
09-26 22:44:53.290: E/AndroidRuntime(2493): ... 20 more
09-26 22:44:53.290: E/AndroidRuntime(2493): Caused by: java.lang.ClassCastException
09-26 22:44:53.290: E/AndroidRuntime(2493): ... 24 more
說實話,我很失落(顯然甚至不是一個虛擬)......我讀了Android碎片的開發人員參考,這裏給出的例子看起來與書中所寫的很相似,但由於某些原因,存在通貨膨脹問題。
我的任何幫助,非常感謝!多謝你們!
嘿,非常感謝您的建議!我在代碼中加入了inflater部分,並試圖再次運行它,但不幸的是,我又收到了一個有限的豁免。在[鏈接](http://developer.android.com/reference/android/app/Fragment.html)下給出的示例中,也沒有包含代碼,但我還沒有弄清楚本質上的區別書中的代碼...你有什麼想法嗎? – Sauerkraut 2014-09-27 20:12:45
用新選項編輯我的答案。 – 2014-09-29 12:40:35
再次感謝您的幫助,非常感謝。我嘗試了一些不同的佈局,但不幸的是它沒有工作。我認爲拉爾託指出了正確的方向。 – Sauerkraut 2014-10-03 17:35:59