我有一个活动和两个碎片。当应用程序启动时,我在活动中加载片段一。
<?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>
我收到错误并停止申请。有可能这样做吗?
答案 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();}
希望它能奏效。