android中在fragment A里面点击button跳转到fragment B怎么实现?

android中在fragment A里面点击button跳转到fragment B怎么实现?

方法一:直接getActivity,使用activity的fragmenttransation的replace方法替换

假设

class OneFragment extends Fragment{
private Button btn;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag_one, null);
btn = (Button)view.findViewById(R.id.button);
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
FragmentManager fm = getActivity().getFragmentManager();
fm.beginTransaction()
//替换为TwoFragment
.replace(R.layout.fragment_container,new TwoFragment())
.commit();
}
});
return super.onCreateView(inflater, container, savedInstanceState);
}
}

但是这样做会使OneFragment和原activity的耦合度提高,fragment设计出来就是有重用的目的,所以不好,使用方法二



方法2:定义回调函数,当button按下调用回调

class OneFragment extends Fragment{
private Button btn;
private OnButtonClick onButtonClick;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.frag_one, null);
btn = (Button)view.findViewById(R.id.button);
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
if(onButtonClick!=null){
onButtonClick.onClick(btn);
}
}
});
return super.onCreateView(inflater, container, savedInstanceState);
}
public OnButtonClick getOnButtonClick() {
return onButtonClick;
}
public void setOnButtonClick(OnButtonClick onButtonClick) {
this.onButtonClick = onButtonClick;
}
public interface OnButtonClick{
public void onClick(View view);
}
}


这样只要在acitivty中设置回调即可

public class MainActivity extends Activity {

private OneFragment oneFragment = new OneFragment();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//。。。
//。。。省略代码
oneFragment.setOnButtonClick(new OnButtonClick() {

@Override
public void onClick(View view) {
//切换到TwoFragment
fm.beginTransaction()
//替换为TwoFragment
.replace(R.layout.fragment_container,new TwoFragment())
.commit();
}
});
}
}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-07-10
通过onAttach(Activity activity) 这个参数,强转成当前activity,然后调用对应的方法,replace或是add fragmentB, 也可以让当前activity,实现个切换的接口,强转成接口调用切换函数。本回答被提问者采纳

怎么通过fragment里面的一个按钮跳转到另一个activity
fragment是运行在Activity中的,转跳到其它Activity需要用到Context的API。具体实现方式:获取装载fragment的Activity做为Context getActivity() 得到Context 创建Intent 意图,并指定转跳的Activity Context context = getActivity();Intent intent = new Intent(context ,目标Activity.class);调用context.startActivi...

安卓Fragment中的Button如何设置事件处理?
那是因为你的activity实现了两个接口,所以在onClick里面的判断就不会进到else里面吧,这样就只是onPhotoClick调用了,另外一个没有调用。

安卓Fragment中的Button如何设置事件处理?
首先,你需要重写Fragment类的onCreateView方法,并找到根View,因为你的按钮是属于根View的。然后对根View使用findViewById()方法找到按钮,并为按钮设置监听器。最後,别忘记返回根View。代码如下:Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {...

在fragment.java里如何实现按钮的(..onClick=ClickButton)点击方法 vo...
用控件数组publicForm1(){InitializeComponent();\/\/定义生成按钮0-9Button[]but=newButton[10];for(inti=0;i<10;i++){\/\/实例化、状态、位置、名称but[i]=newButton();but[i].Enabled=true;but[i].Visible=true;but[i].Left=i*50;but[i].Top=10;but[i].Text=i.ToString();this.Cont...

android 怎么实现底部仿微信功能
那不就是radiogroup里的radiobutton么...在一个主activity里的布局上写一个垂直的linearlayout,上面是framelayout,底下是一个radiogroup,radiogroup里想放几个就放几个radiobutton,然后通过点击radiobutton来往上面的framelayout里贴fragment就行了,上面的布局样式就在fragment里面画 ...

有哪些android开发技巧
把用到ViewPager的布局文件,替换成CustomViewPager就OK了。 4、ListView中item点击事件无响应 listView的Item点击事件突然无响应,问题一般是在listView中加入了button、checkbox等控件后出现的。这个问题是聚焦冲突造成的。在android里面,点击屏幕之后,点击事件会根据你的布局来进行分配的,当你的listView里面增加了button之后...

Android studio怎么给按钮设置监听,并让editText显示文字
设置监听第一步:声明一个Button按键(btn1是自己命名)然后在setContentView(R.layout.***);的下面输入下面的代码 btn1 = findViewById(R.id.button);找到按钮(button是按钮的id,可在xml文件查看)\/\/设置监听btn1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(...

java怎么开发安卓?
2、Android基础Java如果算基础中的基础,那这部分才是你找工作的核心技能,毕竟你要从事的是Android开发,所以Android基础一定要牢固,这部分包括:Android基础UI控件的熟练掌握,也就是指Button、TextView、EditText、CheckBox、RadioButton、ImageView、Spinner、ProgressBar、SeekBar、ListView、RecycleView、ScrollView等,可能不全...

相似回答