我有一个活动A,其中我有一个片段。
在此活动中,片段根据活动A中的用户输入更改为片段A(调用活动A时的默认值)或片段B.
在片段A和A中。 B我有一个点击监听器的按钮。 但此按钮仅适用于活动A开始时的第一次。
当用户更改片段时,这些片段中的按钮会在点击时停止响应。
请建议我需要做些什么才能在片段A和A中制作按钮。 B在用户更改片段时起作用。
我将根据此代码的用户输入替换片段:
fr = new FragmentOneDice();
FragmentManager fm = getFragmentManager();
FragmentTransaction fragmentTransaction = fm.beginTransaction();
fragmentTransaction.replace(R.id.fragment_place, fr);
fragmentTransaction.commit();
在片段活动代码中对于单击侦听器按钮是这样的。
import android.app.Fragment;
import android.app.FragmentManager;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import java.util.ArrayList;
import java.util.Collections;
public class FragmentOneDice extends Fragment implements View.OnClickListener {
Button button1;
View view;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
//Inflate the layout for this fragment
view = inflater.inflate(R.layout.activity_fragment_one, container, false);
button1 = (Button) view.findViewById(R.id.button_one);
button1.setOnClickListener(this);
return view;
}
@Override
public void onClick(View v) {
//MY CODE HERE
}
答案 0 :(得分:1)
问题出在我的activity_main.XML中,我将<Fragment>
定义为所有片段的占位符,并将一个片段设置为默认值。因此,当加载其他片段时,它会重叠,导致按钮上的点击事件无效,我将<Fragment>
更改为<FrameLayout>
作为占位符。我的问题解决了。
答案 1 :(得分:0)
首先你记得一件事,
片段到片段直接事务,或片段到片段直接替换是不可能的。它只能抛出活动。
在第一个片段中定义一个接口,并使容器Activity实现该接口,这样就可以将数据从Fragment发送到Activity。另一方面,创建Second Fragment并在其中定义一个接口。在Content Activity里面的First Fragment接口的实现方法中定义了一个Second Fragment,这里我们通过接口将数据分配给第二个Fragment。