简体   繁体   English

Android片段未显示

[英]Android fragment is not showing up

I have the following codes in my android application:我的 android 应用程序中有以下代码:

main.xml :主文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="activity" />

<fragment
    android:id="@+id/list"
    android:name="com.hugo.test.FragmentA"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1" />

</LinearLayout>

fragmenta.xml :片段.xml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="helloA" />

</LinearLayout>

FragmentA.java :片段A.java:

package com.hugo.test;

//some imports here

public class FragmentA extends Fragment {
    /** Called when the activity is first created. */
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    {
        //super.onCreate(savedInstanceState);
        //setContentView(R.layout.main);

        return inflater.inflate(R.layout.fragmenta, container, false);
    }
}

FragmentActivity.java : FragmentActivity.java :

    package com.hugo.test;

    //some imports here

public class FragmentActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

The layout of the activity should display "activity" and the fragment should display "helloA".活动的布局应显示“活动”,片段应显示“helloA”。 When I run my project I only see "activity", so it seems to me that the fragment is ignored at all.当我运行我的项目时,我只看到“活动”,所以在我看来,这个片段完全被忽略了。

The error I see is :我看到的错误是:

12-19 09:01:05.370: E/AndroidRuntime(1352): FATAL EXCEPTION: main
12-19 09:01:05.370: E/AndroidRuntime(1352): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.hugo.test/com.hugo.test.FragmentActivity}: android.view.InflateException: Binary XML file line #12: Error inflating class fragment
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1751)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1767)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.app.ActivityThread.access$1500(ActivityThread.java:122)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1005)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.os.Handler.dispatchMessage(Handler.java:99)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.os.Looper.loop(Looper.java:132)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.app.ActivityThread.main(ActivityThread.java:4028)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at java.lang.reflect.Method.invokeNative(Native Method)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at java.lang.reflect.Method.invoke(Method.java:491)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at dalvik.system.NativeStart.main(Native Method)
12-19 09:01:05.370: E/AndroidRuntime(1352): Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class fragment
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:688)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.view.LayoutInflater.rInflate(LayoutInflater.java:724)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.view.LayoutInflater.inflate(LayoutInflater.java:479)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.view.LayoutInflater.inflate(LayoutInflater.java:391)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.view.LayoutInflater.inflate(LayoutInflater.java:347)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:245)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.app.Activity.setContentView(Activity.java:1780)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at com.hugo.test.FragmentActivity.onCreate(FragmentActivity.java:11)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1715)
12-19 09:01:05.370: E/AndroidRuntime(1352):     ... 11 more
12-19 09:01:05.370: E/AndroidRuntime(1352): Caused by: android.app.Fragment$InstantiationException: Unable to instantiate fragment com.hugo.test.fragmenta: make sure class name exists, is public, and has an empty constructor that is public
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.app.Fragment.instantiate(Fragment.java:500)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.app.Fragment.instantiate(Fragment.java:468)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.app.Activity.onCreateView(Activity.java:4132)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:664)
12-19 09:01:05.370: E/AndroidRuntime(1352):     ... 20 more
12-19 09:01:05.370: E/AndroidRuntime(1352): Caused by: java.lang.ClassNotFoundException: com.hugo.test.fragmenta in loader dalvik.system.PathClassLoader[/data/app/com.jochen.test-1.apk]
12-19 09:01:05.370: E/AndroidRuntime(1352):     at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:251)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at java.lang.ClassLoader.loadClass(ClassLoader.java:540)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at java.lang.ClassLoader.loadClass(ClassLoader.java:500)
12-19 09:01:05.370: E/AndroidRuntime(1352):     at android.app.Fragment.instantiate(Fragment.java:490)
12-19 09:01:05.370: E/AndroidRuntime(1352):     ... 23 more

Because of that error I added a constructor to FragmentA.java由于那个错误,我向 FragmentA.java 添加了一个构造函数

public FragmentA()
{

}

This error is not gone, the fragment still doesn't show up, same behavior as before.这个错误没有消失,片段仍然没有出现,与以前的行为相同。 Anyone an idea?任何人的想法?

这是由于 0dp 我没有看到,当我从 Android 页面复制该部分时。

use this, it works for me使用这个,它对我有用

public class FragmentA extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View returnView = inflater.inflate(R.layout.fragmenta, container, false);
    return returnView;

}

} }

This这个

public class FragmentActivity extends Activity {

should be应该

public class FragmentActivity extends FragmentActivity {

This is also discussed at here这也在这里讨论

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM