2016-08-19 2 views
1

fabを私のフラグメントに入れるにはどうしたらいいですか?助けてください私はのようなエラーを取得しています。FloatingActionButtonをフラグメントにする方法は?

android.view.InflateException:バイナリXMLファイルのライン#13:エラーが私のフラグメントacticityにクラスフラグメント

を膨張させます。ここに私のコードがあります。

ウェル問題が activity_ownerhome.java 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> 

であります

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ファイルをinflateする – 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

私はそれが問題だとは思わない。 Thewの問題は彼がどのように断片を膨らませるかである。上記の私の答えを参照してください。 – amitairos

+0

これは実際には機能します。しかし、ファブは左上にあります。底にはない。 –

+0

今は大丈夫です。ありがとうございます! –

0

問題は、それはあなたがあなたのビューを膨らませる方法でだ、FABではありません。
断片にこのコードを置き換えます。

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

そして、これを削除します:これにより

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

あなたはあなたのフラグメントのXMLを見てみたい方法を定義する必要があります

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

をし、コード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

関連する問題