微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Android上使用ListFragment时出现问题

如何解决在Android上使用ListFragment时出现问题

| 我对Android编程非常陌生(我已经编写了大量PC应用程序并使用Java),但我一头雾水。我想创建一个使用片段的应用程序。我想创建Fragment Programaticaly(就像在Android开发人员页面上的介绍中所述),但是我的应用程序一直崩溃,我也不知道为什么。 这是我主要活动的代码
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 {
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(),MyList));
}
} 我要做的就是开始在片段中打印字符串列表MyList。但是我程序崩溃了,我得到了这个错误: 06-09 19:25:42.920:错误/ AndroidRuntime(26064):java.lang.RuntimeException:无法启动活动ComponentInfo {com.ccr / com.ccr.Main}:java.lang.IllegalArgumentException:未找到ID的视图0x7f030001用于片段Filebrowser {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>
这就是我的代码读取的内容
  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,\"Filebrowser\");
    System.err.println(\"fragment added\");
    ftransaction.commit();
    System.err.println(\"Done\");
}
这是我的输出
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}
    

解决方法

        问题在这里:
ftransaction.add(R.layout.main,fbrowser,\"FileBrowser\");
第一个参数期望活动布局中存在的视图ID。您正在通过布局。例如,假设您的活动布局中有一个Layout6ѭ的FrameLayout,则可以调用:
ftransaction.add(R.id.container,\"FileBrowser\");
http://developer.android.com/reference/android/app/FragmentTransaction.html#add%28int,%20android.app.Fragment,%20java.lang.String%29     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。