按钮单击以编程方式添加片段

时间:2014-06-19 21:25:59

标签: android android-fragments

我知道这是一个菜鸟问题,但我来自php和javascript,我刚刚开始学习java和android。我已经阅读了有关片段的开发文档,并且我试图在按钮点击时添加片段。应用程序启动,但点击按钮时死亡。我不知道我的逻辑是否错在这里? (直接在xml中添加片段)。

片段类:

public class ExampleFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.example_fragment, container, false);
    }


}

片段xml:

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

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/seekBar1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="17dp"
        android:text="Button" />

    <EditText
        android:id="@+id/editText1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="16dp"
        android:ems="10"
        android:inputType="text" >
        <requestFocus />
    </EditText>

    <SeekBar
        android:id="@+id/seekBar1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/editText1"
        android:layout_marginTop="14dp" />

</RelativeLayout>

活动类:

public class MainActivity extends Activity implements OnClickListener{
    Button addFragment;
    android.app.FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction transaction = fragmentManager.beginTransaction();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initialize();
    }

    private void initialize() 
    {
        addFragment = (Button) findViewById(R.id.bAddF);
        addFragment.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
            ExampleFragment fragment = new ExampleFragment();
            transaction.add(R.id.fragment_holder, fragment);
            transaction.commit();

    }

}

活动xml:

<RelativeLayout 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"
    tools:context="${packageName}.${activityClass}" >

    <TextView
        android:id="@+id/tvHello"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world" />
    <Button 
        android:id="@+id/bAddF"
        android:layout_below="@id/tvHello"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Add Fragment"/>

    <View
        android:id="@+id/fragment_holder"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_below="@id/bAddF">
    </View>


</RelativeLayout>

1 个答案:

答案 0 :(得分:2)

你的fragment_holder需要是一个ViewGroup,我推荐一个FrameLayout,因为它是你可以使用的最简单的ViewGroup。