android中在fragment A里面点击button跳转到fragment B怎么实现?
发布日期:2021-11-12 07:57:01 浏览次数:27 分类:技术文章

本文共 2271 字,大约阅读时间需要 7 分钟。

原文地址:https://zhidao.baidu.com/question/1047010255887861859.html

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

假设

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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按下调用回调

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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中设置回调即可

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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();
            
}
        
});
    
}
}

转载地址:https://blog.csdn.net/happy_love1990/article/details/67083285 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Android Toast自定义使用
下一篇:Android事件拦截机制

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月23日 09时59分35秒