我在Android编程方面很陌生(我编写了大量的PC应用程序并使用了Java),我很茫然.我想创建一个使用片段的应用程序.我想创建Fragment Programaticaly(正如Android Developer页面上的介绍所说)买我的应用程序一直崩溃,我不知道为什么.
这是我的主要活动的代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
FragmentManager fmanager = getFragmentManager();
FragmentTransaction ftransaction = fmanager.beginTransaction();
FileBrowser fbrowser = new FileBrowser();
ftransaction.add(R.layout.main,fbrowser, "FileBrowser");
ftransaction.commit();
fbrowser.test();
}
Run Code Online (Sandbox Code Playgroud)
这是FileBrowser的代码:
公共类FileBrowser扩展了ListFragment {
public void test(){
System.err.println("Entre a test!!!");
String[] MyList = {"HOla","Mundo","De","Las","Listas"};
if (getActivity() == null){
System.err.println("I get a NULL Activity");
}
else{
System.err.println("No NULL Activity Attempting to Create an Adapter");
ArrayAdapter<String> aa = new ArrayAdapter<String>(getActivity(), R.layout.file_row, MyList);
}
//setListAdapter(new ArrayAdapter<String>(this.getActivity(), R.layout.file_row, MyList));
}
Run Code Online (Sandbox Code Playgroud)
}
我要做的就是在片段中打印字符串列表MyList.但是我程序崩溃了,我收到这个错误:
06-09 19:25:42.920:ERROR/AndroidRuntime(26064):java.lang.RuntimeException:无法启动活动ComponentInfo {com.ccr/com.ccr.Main}:java.lang.IllegalArgumentException:找不到id的视图片段FileBrowser的0x7f030001 {4077d558#0 id = 0x7f030001 FileBrowser}
谢谢你的帮助!
PD:我也得到了一个NULL活动消息.
我已经尝试过了,它也没用.
这是我的新xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<FrameLayout
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:id="@+id/flFileBrowser">
</FrameLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
这就是我的代码所读的内容:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
FragmentManager fmanager = getFragmentManager();
FragmentTransaction ftransaction = fmanager.beginTransaction();
FileBrowser fbrowser = new FileBrowser();
System.err.println("I'm about to add the fragment");
ftransaction.add(R.id.flFileBrowser,fbrowser, "FileBrowser");
System.err.println("fragment added");
ftransaction.commit();
System.err.println("Done");
}
Run Code Online (Sandbox Code Playgroud)
这是我的输出:
06-10 12:23:21.520: WARN/System.err(30826): I'm about to add the fragment
06-10 12:23:21.520: WARN/System.err(30826): fragment added
06-10 12:23:21.520: WARN/System.err(30826): Done
06-10 12:23:21.520: WARN/dalvikvm(30826): threadid=1: thread exiting with uncaught exception (group=0x40131760)
06-10 12:23:21.520: ERROR/AndroidRuntime(30826): FATAL EXCEPTION: main
06-10 12:23:21.520: ERROR/AndroidRuntime(30826): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ccr/com.ccr.Main}: java.lang.IllegalArgumentException: No view found for id 0x7f050000 for fragment FileBrowser{4077d3f0 #0 id=0x7f050000 FileBrowser}
06-10 12:23:21.520: ERROR/AndroidRuntime(30826): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1748)
06-10 12:23:21.520: ERROR/AndroidRuntime(30826): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1764)
06-10 12:23:21.520: ERROR/AndroidRuntime(30826): at android.app.ActivityThread.access$1500(ActivityThread.java:122)
06-10 12:23:21.520: ERROR/AndroidRuntime(30826): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1002)
06-10 12:23:21.520: ERROR/AndroidRuntime(30826): at android.os.Handler.dispatchMessage(Handler.java:99)
06-10 12:23:21.520: ERROR/AndroidRuntime(30826): at android.os.Looper.loop(Looper.java:132)
06-10 12:23:21.520: ERROR/AndroidRuntime(30826): at android.app.ActivityThread.main(ActivityThread.java:4025)
06-10 12:23:21.520: ERROR/AndroidRuntime(30826): at java.lang.reflect.Method.invokeNative(Native Method)
06-10 12:23:21.520: ERROR/AndroidRuntime(30826): at java.lang.reflect.Method.invoke(Method.java:491)
06-10 12:23:21.520: ERROR/AndroidRuntime(30826): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
06-10 12:23:21.520: ERROR/AndroidRuntime(30826): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
06-10 12:23:21.520: ERROR/AndroidRuntime(30826): at dalvik.system.NativeStart.main(Native Method)
06-10 12:23:21.520: ERROR/AndroidRuntime(30826): Caused by: java.lang.IllegalArgumentException: No view found for id 0x7f050000 for fragment FileBrowser{4077d3f0 #0 id=0x7f050000 FileBrowser}
Run Code Online (Sandbox Code Playgroud)
问题出在这里:
ftransaction.add(R.layout.main,fbrowser, "FileBrowser");
Run Code Online (Sandbox Code Playgroud)
第一个参数是期望活动布局中存在的视图的id.你正在传递布局.例如,假设你在活动的布局中有一个FrameLayout id="@+id/container"然后你会调用:
ftransaction.add(R.id.container,fbrowser, "FileBrowser");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5406 次 |
| 最近记录: |