2016-08-19 52 views
1

如何將我的fab放在我的片段上?請幫助我得到錯誤,如。如何將FloatingActionButton放入片段?

android.view.InflateException:二進制XML文件行#13:錯誤充氣類片段

在我的片段acticity

。那麼這裏是我的代碼。

井的問題是在getActivity().setContentView(R.layout.activity_ownerhome);

#ownerhome.java 

public class ownerhome extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_ownerhome); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    } 

} 

ownerhomeFragment.java
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.fragment_owner, container, false); 


    ImageLoader.getInstance().init(UILConfig.config(getActivity())); 
    lvCars = (ListView) v.findViewById(R.id.lvOnwer); 

    pref = getActivity().getSharedPreferences("Login.conf", Context.MODE_PRIVATE); 
    Log.d(TAG, pref.getString("username", "")); 
    Log.d(TAG, pref.getString("password", "")); 


    PostResponseAsyncTask taskRead = new PostResponseAsyncTask(getActivity(), this); 
    tvUser = (TextView) v.findViewById(R.id.tvUser); 
    tvUser.setText("Hello! "+pref.getString("username", "")); 

    taskRead.execute("http://carkila.esy.es/user.php?owner="+pref.getString("username", "")); 

    FloatingActionButton fab = (FloatingActionButton) v.findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent in = new Intent(getActivity(), InsertActivity.class); 
      startActivity(in); 
     } 
    }); 
    registerForContextMenu(lvCars); 
    return v; 
} 

content_ownerhome.xml
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context="com.example.kun.carkila.ownerhome" 
tools:showIn="@layout/activity_ownerhome"> 

<fragment 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:name="com.example.kun.carkila.ownerFragment" 
android:id="@+id/ownerhomeFragment"/> 

</RelativeLayout> 

activity_ownerhome.java
<?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:fitsSystemWindows="true" 
tools:context="com.example.kun.carkila.ownerhome"> 

<android.support.design.widget.AppBarLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:theme="@style/AppTheme.AppBarOverlay"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="?attr/actionBarSize" 
     android:background="?attr/colorPrimary" 
     app:popupTheme="@style/AppTheme.PopupOverlay" /> 

</android.support.design.widget.AppBarLayout> 

<include layout="@layout/content_ownerhome" /> 

<android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom|end" 
    android:layout_margin="@dimen/fab_margin" 
    android:src="@drawable/plus" /> 


</android.support.design.widget.CoordinatorLayout> 

fragmentOwnerHome.java

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
app:layout_behavior="@string/appbar_scrolling_view_behavior" 
tools:context="com.example.kun.carkila.ownerhome" 
tools:showIn="@layout/activity_ownerhome"> 


<ListView 
    android:layout_width="match_parent" 
    android:layout_height="450sp" 
    android:id="@+id/lvOnwer" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentBottom="true" /> 

<TextView 
    android:text="TextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_marginTop="24dp" 
    android:textSize="30sp" 
    android:textColor="@color/colorPrimaryDark" 
    android:id="@+id/tvUser" /> 

</RelativeLayout> 

堆棧跟蹤

FATAL EXCEPTION: main 
Process: com.example.kun.carkila, PID: 9267 
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.kun.carkila/com.example.kun.carkila.ownerhome}: android.view.InflateException: Binary XML file line #12: Error inflating class fragment 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
at android.app.ActivityThread.access$800(ActivityThread.java:135) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:136) 
at android.app.ActivityThread.main(ActivityThread.java:5021) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: android.view.InflateException: Binary XML file line #12: Error inflating class fragment 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
at android.view.LayoutInflater.parseInclude(LayoutInflater.java:839) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:745) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
at com.example.kun.carkila.ownerFragment.onCreateView(ownerFragment.java:127) 
at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1036) 
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1230) 
at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1332) 
at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2288) 
at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120) 
at android.support.v4.app.FragmentActivity.dispatchFragmentsOnCreateView(FragmentActivity.java:356) 
at android.support.v4.app.BaseFragmentActivityHoneycomb.onCreateView(BaseFragmentActivityHoneycomb.java:31) 
at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:79) 
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 
at android.view.LayoutInflater.parseInclude(LayoutInflater.java:839) 
at android.view.LayoutInflater.rInflate(LayoutInflater.java:745) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:492) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:397) 
at android.view.LayoutInflater.inflate(LayoutInflater.java:353) 
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
at com.example.kun.carkila.ownerhome.onCreate(ownerhome.java:12) 
at android.app.Activity.performCreate(Activity.java:5231) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1090) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)  
at android.app.ActivityThread.access$800(ActivityThread.java:135)  
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)  
at android.os.Handler.dispatchMessage(Handler.java:102)  
at android.os.Looper.loop(Looper.java:136)  
at android.app.ActivityThread.main(ActivityThread.java:5021)  
at java.lang.reflect.Method.invokeNative(Native Method)  
at java.lang.reflect.Method.invoke(Method.java:515)  
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:827)  
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:643)  
at dalvik.system.NativeStart.main(Native Method)  
Caused by: java.lang.IllegalArgumentException: Binary XML file line #12: Duplicate id 0x7f0e00aa, tag null, or parent id 0xffffffff with another fragment for com.example.kun.carkila.ownerFragment 
at android.support.v4.app.FragmentManagerImpl.onCreateView(FragmentManager.java:2293) 
at android.support.v4.app.FragmentController.onCreateView(FragmentController.java:120) 
at android.support.v4.app.FragmentActivity 
+0

你可以發佈你的整個堆棧跟蹤? –

+0

@GlennPorter - 發佈更新的先生。感謝:D –

+0

嘗試更改getActivity()。setContentView(R.layout.activity_ownerhome);從你的片段類的onCreateView,並膨脹充氣適當的佈局xml文件 – darwin

回答

3

您已經在您的activity_ownerhome.xml中添加了浮動操作按鈕,並且您正在ownerhomeFragment.java中初始化它。

因此,將您的FloatingActionButton添加到fragmentownerhome中。xml本身就像這樣

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:context="com.example.kun.carkila.ownerhome" 
    tools:showIn="@layout/activity_ownerhome"> 

    <ListView 
    android:layout_width="match_parent" 
    android:layout_height="450sp" 
    android:id="@+id/lvOnwer" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_alignParentBottom="true" /> 

    <TextView 
    android:text="TextView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_marginTop="24dp" 
    android:textSize="30sp" 
    android:textColor="@color/colorPrimaryDark" 
    android:id="@+id/tvUser" /> 

    <android.support.design.widget.FloatingActionButton 
    android:id="@+id/fab" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="bottom|end" 
    android:layout_margin="@dimen/fab_margin" 
    android:src="@drawable/plus" /> 
</RelativeLayout> 

並從您的activity_ownerhome.xml文件中移除FloatingActionButton。

+0

我不認爲這是問題所在。問題在於他如何膨脹片段。看到我上面的答案。 – amitairos

+0

其實這個工程。但晶圓廠在左上角。不在底部。 –

+0

現在沒事了。謝謝你,先生! –

0

的問題是不是與FAB,它與你如何誇大你的看法。
片段中替換此代碼:

View v = super.onCreateView(inflater, container, savedInstanceState); 
getActivity().setContentView(R.layout.activity_ownerhome); 

有了這個:

var v = inflater.inflate(R.layout.{your fragment xml}, container, false); 

,並刪除此:

<fragment 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:name="com.example.kun.carkila.ownerFragment" 
android:id="@+id/ownerhomeFragment"/> 

你應該定義你希望你的片段XML來看,然後使用代碼inflater.inflate...對它進行膨脹,然後放入您的片段xml,就像我上面所寫的那樣。

更新:
而是在此的<include layout="@layout/content_ownerhome" />地方:

<FrameLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:id="@+id/content_frame" /> 

然後在您的主要活動寫這樣的代碼:你應該

getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, fragment).commit(); 

而且看你的片段,如果在片段中,您正確填充了片段xml,如上所述。

+0

當我刪除xml時,我的活動沒有任何東西。 –

+0

我更新了我的答案。現在它應該工作。 – amitairos

相關問題