Fragmen中WebView进行回退

本文介绍了如何在Android的Fragment中实现回退功能,并详细解释了如何让Fragment内的WebView能够响应物理返回键进行网页回退。通过重写onBackPressedSupport方法,结合Fragmentation库的支持,实现了流畅的用户体验。

转载请注明:http://blog.youkuaiyun.com/feather_wch/article/details/79391699

1、Fragment中的回退

通过所属的Activity的回退实现该Fragment的退出

getActivity().onBackPressed();

2、Fragment中实现点击物理返回键,Webview能进行网页回退

  • 该方法中的onBackPressedSupport()是开源库中Fragmentation里面的SupportFragment提供的!

XXXFragment.java

@Override
public boolean onBackPressedSupport() {
    if(webView != null && webView.canGoBack()){
        webView.goBack();
        return true;
    }else{
        return false;
    }
}
在 View 中使用 Fragment 通常有以下常见的方法: ### 1. 使用 FragmentManager 和 FragmentTransaction 添加 Fragment 在 Activity 中可以通过 `FragmentManager` 和 `FragmentTransaction` 将 Fragment 添加到指定的 View 容器中。示例代码如下: ```java import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 获取 FragmentManager FragmentManager fragmentManager = getSupportFragmentManager(); // 开启一个事务 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); // 创建 Fragment 实例 Fragment fragment = new YourFragment(); // 将 Fragment 添加到指定的 View 容器中 fragmentTransaction.add(R.id.fragment_container, fragment); // 提交事务 fragmentTransaction.commit(); } } ``` 在上述代码中,`R.id.fragment_container` 是一个在布局文件中定义的 `FrameLayout` 或其他 `ViewGroup`,用于容纳 Fragment。 ### 2. 使用 ViewPager 结合 Fragment 可以使用 `ViewPager` 来展示多个 Fragment,实现滑动切换的效果。示例代码如下: ```java import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.viewpager.widget.ViewPager; import android.os.Bundle; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化所有的 Fragment List<Fragment> fragmentList = initFragments(); // 获取 ViewPager ViewPager viewPager = findViewById(R.id.view_pager); // 创建适配器 MyViewPagerAdapter adapter = new MyViewPagerAdapter(getSupportFragmentManager(), fragmentList); // 设置适配器 viewPager.setAdapter(adapter); } private List<Fragment> initFragments() { List<Fragment> list = new ArrayList<>(); list.add(new Fragment1()); list.add(new Fragment2()); list.add(new Fragment3()); return list; } } ``` 其中 `MyViewPagerAdapter` 是自定义的适配器,用于管理 Fragment 的展示: ```java import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentPagerAdapter; import java.util.List; public class MyViewPagerAdapter extends FragmentPagerAdapter { private List<Fragment> fragmentList; public MyViewPagerAdapter(@NonNull FragmentManager fm, List<Fragment> fragmentList) { super(fm); this.fragmentList = fragmentList; } @NonNull @Override public Fragment getItem(int position) { return fragmentList.get(position); } @Override public int getCount() { return fragmentList.size(); } } ``` ### 3. 在自定义 View 中使用 Fragment 在自定义 View 中使用 Fragment 需要确保自定义 View 所在的上下文是一个 `FragmentActivity` 或其子类。示例代码如下: ```java import android.content.Context; import android.util.AttributeSet; import android.widget.LinearLayout; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; public class CustomView extends LinearLayout { public CustomView(Context context, AttributeSet attrs) { super(context, attrs); if (context instanceof androidx.fragment.app.FragmentActivity) { // 获取 FragmentManager FragmentManager fragmentManager = ((androidx.fragment.app.FragmentActivity) context).getSupportFragmentManager(); // 开启一个事务 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); // 创建 Fragment 实例 Fragment fragment = new YourFragment(); // 将 Fragment 添加到自定义 View 中 fragmentTransaction.add(this.getId(), fragment); // 提交事务 fragmentTransaction.commit(); } } } ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猎羽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值