精华内容
下载资源
问答
  • 2021-10-20 15:26:53

    OneFragment.java

    package com.example.myapplication;
    
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    import androidx.fragment.app.Fragment;
    
    public class OneFragment extends Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_one,container,false);
            return view;
        }
    }
    
    

    TwoFragment.java

    package com.example.myapplication;
    
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    import androidx.fragment.app.Fragment;
    
    public class TwoFragment  extends Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.frament_two,container,false);
            return view;
        }
    }
    
    

    MainActivity.java

    package com.example.myapplication;
    
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    
    import androidx.appcompat.app.AppCompatActivity;
    import androidx.fragment.app.Fragment;
    import androidx.fragment.app.FragmentManager;
    import androidx.fragment.app.FragmentTransaction;
    
    import java.util.Scanner;
    
    public class MainActivity extends AppCompatActivity  implements View.OnClickListener{
        private Button one,two;
        String [] HighLetter = {"A"};
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            one = findViewById(R.id.one);
            two = findViewById(R.id.two);
    
            one.setOnClickListener(this);
            two.setOnClickListener(this);
    
        }
    
        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.one:
                    replaceFragment(new OneFragment());
               
                    break;
                case R.id.two:
                    replaceFragment(new TwoFragment());
                    break;
                default:
                    break;
            }
        }
        public void replaceFragment(Fragment fragment) {
            FragmentManager supportFragmentManager = getSupportFragmentManager();
            FragmentTransaction fragmentTransaction = supportFragmentManager.beginTransaction();
            fragmentTransaction.replace(R.id.frgment,fragment);
            fragmentTransaction.commit();
        }
    
         
        }
    
    
    

    activity_main.xml

    <?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">
        <LinearLayout
            android:id="@+id/frgment"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:layout_width="match_parent"
            android:layout_weight="17">
        </LinearLayout>
    
        <Button
            android:id="@+id/one"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="One"
            />
        <Button
            android:id="@+id/two"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="Two"
            />
    
    </LinearLayout>
    
    

    fragment_one.xml

    <?xml version="1.0" encoding="utf-8"?>
    <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <TextView
            android:id="@+id/fr_two"
            android:text="one_fragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
    </androidx.constraintlayout.widget.ConstraintLayout>
    

    fragment_two.xml

    package com.example.myapplication;
    
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    
    import androidx.fragment.app.Fragment;
    
    public class TwoFragment  extends Fragment {
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.frament_two,container,false);
            return view;
        }
    }
    
    
    更多相关内容
  • 实现Activity 之间以及 fragment 之间 共享元素 平滑动画过渡跳转,实现界面跳转动画
  • 今天写导航栏子页面跳转时候死活无法跳转,错误类型如图: 那么原因是我使用了 Intent 跳转页面,也就是 : override fun onActivityCreated(savedInstanceState: Bundle?) { super.onActivityCreated...
  • 主要介绍了Android Activity与Fragment之间的跳转实例详解的相关资料,需要的朋友可以参考下
  • android+Fragment实现页面的局部跳转

    热门讨论 2013-03-05 17:05:36
    android平板电脑开发,使用Fragment实现页面的局部跳转,像管理系统一样,点击左边的连接实现右边页面的跳转
  • 为了实现Fragment跳转到其他Activity,下面需要创建以下文件: 第一步:简单编写布局文件fragment_activity.xml和抽象类TemplateFragmentActivity.java代码如下: fragment_activity.xml <?xml version=1.0 ...
  • Android通过按钮实现Fragment之间的跳转,代码可以运行.zip
  • 今天总结一下Fragment间的参数传递及结果返回的方法,非常不错,具有参考借鉴价值,需要的朋友参考下
  • Android开发学习------实现fragment跳转

    千次阅读 2022-01-21 21:50:47
    大多数的应用设计中,我们需要实现界面的跳转,如桌面应用程序不同窗体间的跳转、web应用程序不同jsp间的跳转等等,而Android应用的界面跳转,一般是fragment跳转,并不像web应用程序一样简简单单地写个servlet...

    在大多数的应用设计中,我们需要实现界面的跳转,如桌面应用程序不同窗体间的跳转、web应用程序不同jsp间的跳转等等,而Android应用的界面跳转,一般是fragment跳转,并不像web应用程序一样简简单单地写个servlet请求就完事,其具体流程稍显复杂:

    大体思路

           一般我们的fragment会处于一个activity中,而我们需要跳转到另一个fragment,那么就可以另外创一个activity,比如我做的用户界面,我创了个UserActivity,要在我们已经有的用户个人界面跳转到一个界面(比如是编辑资料),就先从当前的fragment所在的activity跳转到另一个activity,再由另一个activity控制要跳转去的fragment。

    具体实现

    以个人的一个项目为例:

    比如我这里就是底部导航栏中“用户”板块显示的内容,它是在fragment_forth里面,而这个文件和ForthFragment绑定,也就是说这一部分目前属于ForthFragment,而这个fragment属于MainActivity,但是我想让它点击“编辑资料”后跳转到另一个不属于MainActivity的fragment(如果都放到MainActivity,会很冗杂),那么就在相应的鼠标点击事件里面通过intent先让它跳转到另一个叫做UserActivity的地方(还可以带参数,刚好方便我们设定要UserActivity去哪个界面,我这里跳转到edit界面需要的参数是0)

    ,然后在UserActivity重写onResume方法(什么是onResume方法以及有什么用可以自行CSDN),在这个方法里面通过FragmentTransaction和获取到的id去判断,

    ,在这里后面需要用到replace方法(表示替代),比如我的activity_user(这时候应用已经从开始我们那个大的activity_main跳转到activity_user了,我所有的用户操作界面都在activity_user中展示),而我的activity_user实际上只有一个viewPager

    ,它的用处就是在UserActivity中判定完id值并做相应的实例化处理后(这个实例化处理也有讲究,后面说),作为replace方法的第一个参数,表示要被替代掉的部分(也就是最开始啥也没有的显示部分),第二个参数放我们实例化了的fragment,就可以实现跳转效果了(最后别忘了commit,以及onResume方法必须要调用父类方法即“super.onResume()")

     关于上面提到的”实例化“:


    还可以看到我这里的fragment实例化是用的相应的类内部设定的一个static方法,这个方法的特殊之处就是可以设定参数(我这里都还只有id一个参数,可以加),这个方法看上去和构造函数有点像,但它主要和intent一起使用,在activity之间传值,但如果使用构造函数传值,在应用程序的横竖状态改变(比如从竖屏变为横屏),应用程序会自动重新加载该界面,从而导致之前的fragment构造方法中的参数丢失(默认使用无参构造),因此使用可以长期保存的bundle进行传值是更为推荐的

     

     

     

     

     

    展开全文
  • 本文实例讲述了Android开发使用Activity嵌套多个Fragment实现横竖屏切换功能的方法。分享给大家供大家参考,具体如下: 一、上图 二、需求 近期项目遇到个横竖屏切换的问题,较为复杂,此记之。 1、Activity中竖...
  • 主要介绍了Android编程使用Fragment界面向下跳转并一级级返回的实现方法,较为详细的分析了Fragment界面跳转所涉及的相关知识点与实现技巧,并附带了完整的实例代码供读者下载参考,需要的朋友可以参考下
  • Fragment之间跳转实现

    千次阅读 2016-10-09 08:49:18
    在跳转时候主要的思路是:A_fragment发送信号-->信号传送到activity-->activity实现fragment切换-->切换到B_fragment这里你可能想到两种方式实现,一个是用发送intent广播,activity接...

    博客导航

    一、Fragment跳转基础

    Fragment依附于它的activity,fragment之间的跳转也依赖于activity。在跳转时候主要的思路是:A_fragment发送信号-->信号传送到activity-->activity实现fragment切换-->切换到B_fragment。在这里你可能想到两种方式实现,一个是用发送intent广播,activity接收到该广播然后实现跳转(这里activity可以直接跳转,或者模拟用户点击操作跳转,performClick()之类的,如果UI界面有另外一个frament按钮的话);两另外一个是用回调的方式来实现。用广播的形式跳转这里就不详细说了,接下来是用回调的方式跳转。

    二、Fragment之间跳转实现

    1、定义一个interface

      public interface OnHeadlineSelectedListener {
            public void onArticleSelected(int position);
        }


    这个接口需要activity继承并实现具体的实现类。在fragment里则当一个方法来调用。

    2、在onAttach里把对应的interface依附于activity

     

    public class HeadlinesFragment extends ListFragment {
        OnHeadlineSelectedListener mCallback;
    
        // Container Activity must implement this interface
        public interface OnHeadlineSelectedListener {
            public void onArticleSelected(int position);
        }
    
        @Override
        public void onAttach(Activity activity) {
            super.onAttach(activity);
    
            // This makes sure that the container activity has implemented
            // the callback interface. If not, it throws an exception
            try {
                mCallback = (OnHeadlineSelectedListener) activity;
            } catch (ClassCastException e) {
                throw new ClassCastException(activity.toString()
                        + " must implement OnHeadlineSelectedListener");
            }
        }
    
        ...
    }

     

    至于为什么要onAttach里这样做呢?这个可以看fragment的生命周期,onAttach是当fragment被加入到activity时调用,在这里可以获取到所在的activity。

     

    3.在fragment里调用接口

     

        @Override
        public void onListItemClick(ListView l, View v, int position, long id) {
            // Send the event to the host activity
            mCallback.onArticleSelected(position);
        }

     

     

     

    在ListFragment里面有个点击事件onListIttemClick回调。在这里调用接口发送切换信号。在你的项目里,你就在需要的地方调用来发送信号切换fragment。

    4.在activity里继承接口并实现方法

     

    public static class MainActivity extends Activity
            implements HeadlinesFragment.OnHeadlineSelectedListener{
        ...
    
        public void onArticleSelected(int position) {
            // 用户选中HeadlinesFragment中的头标题后
            // 做一些必要的业务操作
    
            ArticleFragment articleFrag = (ArticleFragment)
                    getSupportFragmentManager().findFragmentById(R.id.article_fragment);
    
            if (articleFrag != null) {
                // 这里是实现大屏适应,如果 article frag 不为空,那么同时显示两个fragmnet的布局...
                
                articleFrag.updateArticleView(position);
            } else {
                // 实现fragment之间的切换
    
    	    //关联信息
                // 创建fragment并给他一个跟选中的文章有关的参数
                ArticleFragment newFragment = new ArticleFragment();
                Bundle args = new Bundle();
                args.putInt(ArticleFragment.ARG_POSITION, position);
                newFragment.setArguments(args);
    
                //实现跳转
                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    
                // 用这个fragment替换任何在fragment_container中的东西
                // 并添加事务到back stack中以便用户可以回退到之前的状态
                transaction.replace(R.id.fragment_container, newFragment);
                transaction.addToBackStack(null);
    
                // 提交事务
                transaction.commit();
            }
        }
    }

    在onArticleSelected里实现跳转fragment跳转的代码。在fragment里调用调用interface就是调用这里的具体实现代码,类似于fragment调用activity里的普通方法一样。

     

    附上谷歌官方demo。http://download.csdn.net/detail/loongago/9648329

    展开全文
  • android的关于fragment的demo,很适合初学者,可以运行,页面效果也不错,可以实现各个Activity之间的跳转,可以取代tabhost
  • 自己项目中用到fragment搭建框架,从网上找得一个demo,实现activity与fragment相互传值;fragmentfragment跳转。跟大家分享
  • Android应用中的fragement跳转demo,跳转是从一个子fragement上的按钮跳转到其他子fragement上,不是通过导航栏上的按钮
  • 应用的交互中,我可能需要实现:从当前的fragment跳转到另一个fragment从当前的fragment跳转到一个activity中从当前的activity跳转到一个fragment中网上提供的思路较多,这里总结了一套自己的方法。一、从当前的...

    在应用的交互中,我可能需要实现:从当前的fragment跳转到另一个fragment

    从当前的fragment跳转到一个activity中

    从当前的activity跳转到一个fragment中

    网上提供的思路较多,这里总结了一套自己的方法。

    一、从当前的fragment跳转到另一个fragment

    1.在相应fragment全局中声明fragment管理对象及事务对象。// Fragment管理对象 private FragmentManager manager; private FragmentTransaction ft;1

    2

    3

    2.在OnCreate方法中初始化fragment管理对象@Override public void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); manager = getFragmentManager(); }1

    2

    3

    4

    5

    6

    7

    3.从 FragmentManager 获得一个FragmentTransaction实例MyJDEditFragment myJDEditFragment = new MyJDEditFragment();ft = manager.beginTransaction();//当前的fragment会被myJDEditFragment替换ft.replace(R.id.realtabcontent, myJDEditFragment);ft.addToBackStack(null);ft.commit();1

    2

    3

    4

    5

    6

    那么如何在fragment切换的时候还可以传递参数呢?

    我们可以使用setArguments()方法绑定一个bundle对象传递到另外一个fragment中。myJDEditFragment.setArguments(bundle);1

    在另外一个fragment中(myJDEditFragment)使用getArguments()可以拿到bundle对象。

    二、从当前的fragment跳转到一个activity中

    由于fragment可以使用 getActivity() 访问Activity实例,所以这一步实现很简单。intent=new Intent(getActivity(), UserLoginActivity.class);startActivity(intent);1

    2

    三、从当前的activity跳转到一个fragment中

    如果是从fragment跳转到activity中,然后想从这个activity中再跳转回fragment,这时直接finish这个activity即可。

    如果需求是这样的:

    在“更多”页面里点击“账号管理”弹出一个activity,处理完这个activity后我们要跳转到”我的京东“中,该如何实现呢?

    e74db98772d25227e4c182d4e710fffe.png 

    fa9037216de6ae6d59abfb3efa0e6175.png 

    1、 在对应activity中使用意图跳转到MainActivity中,这里通过意图塞入了一个标识符(更严谨的方式是通过请求码和结果码实现)。// 登录成功跳转到我的京东首页Intent intent = new Intent(UserLoginActivity.this,MainActivity.class);intent.putExtra("userloginflag", 1);startActivity(intent);1

    2

    3

    4

    2.在MainActivity的onResume()方法中得到这个标识符,并且切换到相应的Tab即可。@Override protected void onResume() { int id = getIntent().getIntExtra("userloginflag", 0); if (id == 1 ) { mTabHost.setCurrentTab(3); //3代表”我的京东“所在条目的位置,参考下面的源码即可理解 } super.onResume(); }1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    附上MainActiviy.java的源码及布局文件activity_main.xmlpackage com.example.jds;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTabHost;import android.support.v4.app.FragmentTransaction;import android.support.v4.view.ViewPager;import android.view.LayoutInflater;import android.view.View;import android.widget.ImageView;import android.widget.Toast;import android.widget.TabHost.TabSpec;import android.widget.TextView;import com.example.jds.fragment.CarFragment;import com.example.jds.fragment.CategoryFragment;import com.example.jds.fragment.IndexFragment;import com.example.jds.fragment.MoreFragment;import com.example.jds.fragment.MyJDIndexFragment;import com.example.jds.fragment.SettingFragment;import com.example.jds.util.UserApplication;public class MainActivity extends FragmentActivity { /** * ----------------------------------------------- */ public MyJDIndexFragment myJDIndexFragment; // 更多页面 public MoreFragment moreFragment; // 设置页面 public SettingFragment settingFragment; // 声明控件对象 public FragmentTabHost mTabHost; // 布局填充器 private LayoutInflater inflater; // 存放文本的数组 private int tabHostTextArray[] = { R.string.tabhost_index, R.string.tabhost_category, R.string.tabhost_car, R.string.tabhost_my_jd, R.string.tabhost_more }; // 存放图标的数组 private int tabHostIconArray[] = { R.drawable.tab_home_index, R.drawable.tab_home_category, R.drawable.tab_home_car, R.drawable.tab_home_my_jd, R.drawable.tab_home_more }; // 声明片段对应的数组 private Class fragments[] = { IndexFragment.class, CategoryFragment.class, CarFragment.class, MyJDIndexFragment.class, MoreFragment.class }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化布局填充器对象 inflater = LayoutInflater.from(this); // 查找tabHost对象 mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost); // 启动tabHost mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent); // 遍历片段 for (int i = 0; i < fragments.length; i++) { // 创建一个TabSpec TabSpec tabSpec = mTabHost.newTabSpec( getResources().getString(tabHostTextArray[i])) .setIndicator(getTabItemView(i)); // 加入到TabHost中 mTabHost.addTab(tabSpec, fragments[i], null); } initview(); } public View getTabItemView(int i) { View view = inflater.inflate(R.layout.tab_nav_item, null); ImageView tab_nav_img = (ImageView) view.findViewById(R.id.tab_nav_img); TextView tab_nav_text = (TextView) view.findViewById(R.id.tab_nav_text); // 设置图片及文本 tab_nav_img.setImageResource(tabHostIconArray[i]); // Toast.makeText(this, tabHostIconArray[i], 1).show(); tab_nav_text.setText(getResources().getString(tabHostTextArray[i])); return view; } /** * fragment */ private void initview() { FragmentManager fm = getSupportFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); moreFragment = new MoreFragment(); myJDIndexFragment = new MyJDIndexFragment(); // ft.add(R.id.realtabcontent, accountManagerFragment); // ft.add(R.id.realtabcontent, myJDFragment); settingFragment = new SettingFragment(); /* * ft.add(R.id.realtabcontent, accountManagerFragment); * ft.add(R.id.realtabcontent, myJDFragment); * ft.add(R.id.realtabcontent,myJDIndexFragment); * ft.add(R.id.realtabcontent,) */ ft.commit(); } @Override protected void onResume() { int id = getIntent().getIntExtra("userloginflag", 0); if (id == 1 ) { mTabHost.setCurrentTab(3); } super.onResume(); }}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

    30

    31

    32

    33

    34

    35

    36

    37

    38

    39

    40

    41

    42

    43

    44

    45

    46

    47

    48

    49

    50

    51

    52

    53

    54

    55

    56

    57

    58

    59

    60

    61

    62

    63

    64

    65

    66

    67

    68

    69

    70

    71

    72

    73

    74

    75

    76

    77

    78

    79

    80

    81

    82

    83

    84

    85

    86

    87

    88

    89

    90

    91

    92

    93

    94

    95

    96

    97

    98

    99

    100

    101

    102

    103

    104

    105

    106

    107

    108

    109

    110

    111

    112

    113

    114

    115

    116

    117

    118

    119

    120

    展开全文
  • Fragment的四种跳转

    千次阅读 2021-05-12 10:56:38
    从同一个Activiy的一个Fragment跳转到另外一个Fragment 从一个Activity的Fragment跳转到另外一个Activity 从一个Activity跳转到另外一个Activity的Fragment上 从一个Activity的Fragment跳转到另外一个Activity的...
  • 通过接口的方式实现fragment之间的跳转操作
  • 如有错误欢迎指正 上网搜的文章大都是通过...但是fragment的转换的出发事件应该都是发生在fragment内部的吧,在fragment内部发生的事件是fragment自己监听还是activity监听? 我们先来看一下嵌套fragment的...
  • Android中Fragment之间的跳转

    千次阅读 2021-05-05 10:25:31
    注意:这一次要实现跳转的两个fragment:第一个fragment是MainActivity里面的一个子fragment(名字叫RecommendFragment),另一个是一个单独的fragment(名字叫TestFragment)。 下面是实现的步骤和一些需要注意的...
  • Activity与Fragment之间跳转实现

    千次阅读 2018-11-05 16:40:26
    1.实现Activity到Fragment之间的跳转 首先MainActivity的条件函数中加入如下代码 Intent mIntent = new Intent(MainActivity.this,Menu.class); mIntent.putExtra("id",1); startActivity(mIntent); ...
  • 1.问题描述:我想要给fragment对应的视图中一个字段“修改资料”添加跳转逻辑,即点击跳转到修改用户资料的页面,我原来想的是原来的activity中直接通过findViewById()拿到fragment视图中的对象,但是这样会产生...
  • Fragment+recyclerview实现简易跳转

    千次阅读 2020-03-29 11:26:01
    fragment+recyclerview实现简易的微信跳转 部分代码已放在码云 https://gitee.com/kadd/android/tree/master/recyclerview 1.网格的实现 tab_chat.xml <androidx.recyclerview.widget.RecyclerView android...
  • com.example.text里创建几个fragment. 准备工作结束。 下面按喜好修改布局以及重写适配器。 布局参考 activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayou..
  • Android Fragment 跳转方法

    千次阅读 2019-04-08 19:02:25
    最近做项目涉及到了很多关于Fragment跳转的问题,虽然跳转的方式不多,但还是搞的我的晕头转向,所以写了一篇文章主要介绍有关Fragment的四种跳转方式: 1、从同一个Activiy的一个Fragment跳转到另外一个Fragment 2...
  • Android Fragment实现底部通知栏,供大家参考,具体内容如下 截图如下: 1. 第一步先要创建fragment(动态注册) 然后将两个勾选取消掉(还有一种是自己手动创建) 会自动生成相对应的layout布局,剩下的要根据...
  • 文章目录配置环境 配置环境
  • 主要为大家详细介绍了Android使用Intent实现页面跳转,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Activity和Fragment跳转

    2020-10-20 17:59:25
    //Activity Intent intent = new Intent(InfoActivity.this,EmptyActivity.class);//EmptyActivity里面是viewpager...//1代表你要跳转fragment下标,下标从0开始 startActivity(intent); //fragment所属的activity i

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,809
精华内容 7,523
关键字:

在fragment实现跳转