首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android上使用ListFragment的问题

在Android上使用ListFragment的问题
EN

Stack Overflow用户
提问于 2011-06-10 01:29:11
回答 1查看 5.4K关注 0票数 1

我对Android的编程非常陌生(我对PC应用程序进行了广泛的编程,并使用了Java),我感到不知所措。我想要创建一个使用片段的应用程序。我想要创建片段Programaticaly (正如Android页面上介绍的那样),购买我的应用程序不断崩溃,我不知道为什么。

下面是我主要活动的代码:

代码语言:javascript
复制
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();
}

下面是FileBrowser的代码:

公共类FileBrowser扩展ListFragment {

代码语言:javascript
复制
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));
}

}

我要做的就是开始在片段中打印字符串列表MyList。然而,我的程序崩溃了,我得到了这个错误:

06-09 19:25:42.920: ERROR/AndroidRuntime(26064):java.lang.RuntimeException:无法启动活动ComponentInfo{com.ccr/com.ccr.Main}:java.lang.IllegalArgumentException:没有为片段FileBrowser{4077d558 #0 id=0x7f030001 FileBrowser}找到id 0x7f030001的视图

谢谢你的帮助!

PD:我也得到了一个空活动消息。

我试过了,但也没用。

这是我的新xml文件

代码语言:javascript
复制
 <?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>

我的代码是这样写的:

代码语言:javascript
复制
  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");
}

这是我的输出:

代码语言:javascript
复制
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}
EN

回答 1

Stack Overflow用户

发布于 2011-06-10 03:08:00

问题在于:

代码语言:javascript
复制
ftransaction.add(R.layout.main,fbrowser, "FileBrowser");

第一个参数期望活动布局中存在视图的id。你正在传递一个布局。例如,假设在使用FrameLayout的活动布局中有一个id="@+id/container",然后调用:

代码语言:javascript
复制
ftransaction.add(R.id.container,fbrowser, "FileBrowser");

http://developer.android.com/reference/android/app/FragmentTransaction.html#add%28int,%20android.app.Fragment,%20java.lang.String%29

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6301074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档