将片段替换为另一个

时间:2016-05-06 17:03:25

标签: android android-fragments

我有一个活动和两个碎片。当应用程序启动时,我在活动中加载片段一。

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

我在片段1中有按钮,我想在点击它时,用片段拖曳替换它(加载父片段容器)。片段1和丝束的布局如下:

<FrameLayout 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">
    <Button
        android:id="@+id/replace"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Replace" />
</FrameLayout>

我收到错误并停止申请。有可能这样做吗?

3 个答案:

答案 0 :(得分:1)

将此信息放入按钮的onclicklistner中  getFragmentManager()。beginTransaction()。replace(R.id.fragment_place,new Second_fragment())。commit();

// second_fragment ----你要膨胀:)

答案 1 :(得分:1)

只需将此代码写入片段按钮单击侦听器即可。像这样的东西

library(data.table)
lst <- lapply(urls, fread, skip= 2, drop=12) 

答案 2 :(得分:0)

试试这个  首先创建一个接口。像这样: -

public interface Communicator 
{
  public void responde();
}   

然后在您的活动中实现此接口。 并编写此代码以将第一个片段替换为第二个。

@Override
public void responde(){
    FragmentManager manager = getFragmentManager();
    FragmentTransaction transation  = manager.beginTransaction();
    SecondFragment   secondFragment = new SecondFragment();
    transation.replace(R.id.myActivity, secondFragment, "secFrag");
    transation.commit();}

之后在第一个片段中添加代码

Communicator comm;

public void onActivityCreated(Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
comm = (Communicator)getActivity();}
//button on click
public void onClick(View v) {comm.responde();}

希望它能奏效。