错误充气片段
我只是想跟随Android Dev上的示例代码来在活动中给一个片段充气。我有一个更复杂的项目,我正在工作,但我在这里遇到了同样的错误。任何人都可以将我指向正确的方向吗?错误充气片段
延伸片段
package com.example.fragtest;
import android.support.v4.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
public class FragOne extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container, Bundle savedInstanceState){
return inflater.inflate(R.layout.activity_main, container,false);
}
}
延伸FragmentActivity
package com.example.fragtest;
import android.os.Bundle;
import android.view.Menu;
import android.support.v4.app.FragmentActivity;
public class MainActivity extends FragmentActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}
的XML,其中所述片段是
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<fragment android:name="com.example.fragtest.FragOne"
android:id="@+id/frag"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</LinearLayout>
其中活动名称设置
清单中的类的类<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.fragtest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
这里是logcat的输出
07-17 23:45:09.053: E/AndroidRuntime(560): FATAL EXCEPTION: main
07-17 23:45:09.053: E/AndroidRuntime(560): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.fragtest/com.example.fragtest.MainActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class fragment
07-17 23:45:09.053: E/AndroidRuntime(560): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.app.ActivityThread.access$600(ActivityThread.java:122)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.os.Handler.dispatchMessage(Handler.java:99)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.os.Looper.loop(Looper.java:137)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.app.ActivityThread.main(ActivityThread.java:4340)
07-17 23:45:09.053: E/AndroidRuntime(560): at java.lang.reflect.Method.invokeNative(Native Method)
07-17 23:45:09.053: E/AndroidRuntime(560): at java.lang.reflect.Method.invoke(Method.java:511)
07-17 23:45:09.053: E/AndroidRuntime(560): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
07-17 23:45:09.053: E/AndroidRuntime(560): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
07-17 23:45:09.053: E/AndroidRuntime(560): at dalvik.system.NativeStart.main(Native Method)
07-17 23:45:09.053: E/AndroidRuntime(560): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class fragment
07-17 23:45:09.053: E/AndroidRuntime(560): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:697)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
07-17 23:45:09.053: E/AndroidRuntime(560): at com.example.fragtest.FragOne.onCreateView(FragOne.java:18)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:846)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1061)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1160)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:272)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:669)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
07-17 23:45:09.053: E/AndroidRuntime(560): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.app.Activity.setContentView(Activity.java:1835)
07-17 23:45:09.053: E/AndroidRuntime(560): at com.example.fragtest.MainActivity.onCreate(MainActivity.java:12)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.app.Activity.performCreate(Activity.java:4465)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
07-17 23:45:09.053: E/AndroidRuntime(560): ... 11 more
07-17 23:45:09.053: E/AndroidRuntime(560): Caused by: java.lang.IllegalArgumentException: Binary XML file line #7: Duplicate id 0x7f080000, tag null, or parent id 0x0 with another fragment for com.example.fragtest.FragOne
07-17 23:45:09.053: E/AndroidRuntime(560): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:277)
07-17 23:45:09.053: E/AndroidRuntime(560): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:669)
07-17 23:45:09.053: E/AndroidRuntime(560): ... 30 more
在你的类,它扩展FragmentActivity
要设置视图标题为activity_main
一个XML文件。在activity_main
里面你可以参考你的片段代码,com.example.fragtest.FragOne
。 加载该XML时,将执行与com.example.fragtest.FragOne
关联的代码。那片段的代码返回查看与R.id.activity_main
。
该XML文件引用了相同的片段刚刚实例化它的代码。你看到了难题。
要解决您的问题实例,请在您的片段类中找到一个新的XML文件(其名称不是activity_main
)。而不是膨胀activity_main
膨胀一个单独的XML(一个不包含对调用它的代码的引用)。有效地activity_main
应该是容器,这个新的布局(例如fragment_layout
)将成为UI部分。
我喜欢这样想:尽管教条,片段有三个部分。容器活动(这可以,并且在你的情况下应该通过setContentView膨胀一个布局XML文件),片段的java代码(这可以,并且在你的情况下应该膨胀一个布局。而不是activity_main
),而片段的关联XML文件(通过您的Fragment类进行膨胀的文件,不包括回到其代码的循环引用)。
当然,这些咒语有漏洞,但你得到了漂移?
我明白了,非常感谢!这只是我寻找的那种解释:) – 2012-07-18 02:31:49
简单修复,像魅力一样工作,感谢您花时间帮助我 – 2012-07-18 02:43:33
非常欢迎您。很高兴我能帮上忙! – user1449018 2012-07-18 12:45:02
机器人:ID = “@ + ID /断枝”
你logcat中表明您的片段ID是另一个的副本。你有任何其他XML元素具有相同的ID?如果没有,你有没有尝试清理你的项目?
Project->Clean...
更改为香蕉,仍然有相同的错误 – 2012-07-18 00:27:51
mhmm,是啊我错了。我很抱歉。 – 2012-07-18 06:17:01
检查你的片段类,它膨胀的activity_main xml文件是错误的,它应该膨胀你的片段的XML文件。
我有同样的问题。在我的XML创建视图,而不是查看
这样变化所需
<view
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="20.7dp"
android:textColor="@color/silver_two"
/>
到
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_marginTop="20.7dp"
android:textColor="@color/silver_two"
/>
“在com.wajumbie.nasadailyimage.NasaDailyImage.onCreate(NasaDailyImage.java:37)” 是什么是NasaDailyImage中的第37行,在你的onCreate()? – Sam 2012-07-17 23:41:09
@ Sam,谢谢,看起来我发布了错误的日志,现在正确的日志已发布 – 2012-07-17 23:44:29
你能发布你如何实例化这个片段吗? – user1449018 2012-07-17 23:50:13