片段添加不起作用

时间:2017-03-07 03:02:08

标签: android android-fragments

我试图通过向mainactivity中的布局(sample_content_fragment)添加一个片段(AnotherFragment)来动态加载片段。但是当我点击button1时它不起作用。下面的代码运行所以错误是&# 39;按钮。

public void onClick(View v) {
    switch (v.getId()) {
    case R.id.button1:
        AnotherFragment fragment = new AnotherFragment();
        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.add(R.id.sample_content_fragment, fragment);
        transaction.commit();
        break;
    }

在这里你可以看到mainactivity的布局:

 <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"
    android:orientation="vertical" >

    <fragment
    android:id="@+id/fregment_test"
    android:name="com.example.henucmapus.TestFragment"
    android:layout_width="match_parent"
    android:layout_height="112dp" />

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

这是我要加载的片段。

 import android.app.Fragment;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class AnotherFragment extends Fragment{
 public View OnCreateView(LayoutInflater inflater,ViewGroup container,
           Bundle savedInstanceState){
     View view =inflater.inflate(R.layout.anotherfragment,container, false);

     return view;
 }
}

这是片段布局:

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/t1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="11111111111"
        />

</LinearLayout>

1 个答案:

答案 0 :(得分:1)

OnCreateView在Android术语中没有任何意义(至少在Java中,Xamarin确实将其大写)。

您需要的正确方法是onCreateView。 (小写on

如果你使用注释,你可以看到。

例如。

public class AnotherFragment extends Fragment{
    @Override
    public View onCreateView(LayoutInflater inflater,ViewGroup container,
           Bundle savedInstanceState){
        View view = inflater.inflate(R.layout.anotherfragment,container, false);

        return view;
    }
}

如果这不起作用,您的主要布局中似乎没有R.id.button1,因此无论如何都没有进行片段交易