精华内容
下载资源
问答
  • 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

    展开全文
  • public void switchContent(Fragment from, Fragment to, FragmentTransaction transaction) { if (!to.isAdded()) { // 先判断是否被add过 transaction.hide(from).add(R.id.framelayout_id, to).commit...
    public void switchContent(Fragment from, Fragment to,
    			FragmentTransaction transaction) {
    
    		if (!to.isAdded()) { // 先判断是否被add过
    
    			transaction.hide(from).add(R.id.framelayout_id, to).commit(); // 隐藏当前的fragment,add下一个到Activity中
    
    		} else {
    
    			transaction.hide(from).show(to).commit(); // 隐藏当前的fragment,显示下一个
    
    		}
    
    	}

    展开全文
  • 在Fragment实现跳转

    2018-09-19 21:39:04
    代码示例: private View getPopupWindowContentView() { // 一个自定义的布局,作为显示的内容 //int layoutId = R.layout.popup_content_layout; // 布局ID View.OnClickListener menuItemOnClickListener = ne....

    代码示例:

    private View getPopupWindowContentView() {
            // 一个自定义的布局,作为显示的内容
            //int layoutId = R.layout.popup_content_layout;   // 布局ID
            View.OnClickListener menuItemOnClickListener = new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Toast.makeText(v.getContext(), "Click " + ((TextView) v).getText(), Toast.LENGTH_SHORT).show();
                    if (mPopupWindow != null) {
                        mPopupWindow.dismiss();
                    }
                }
            };
            contentView.findViewById(R.id.menu_item1).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(getActivity(), About.class);
                    startActivity(intent);
                }
            });
    
            contentView.findViewById(R.id.menu_item2).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(getActivity(), UpdateInfo.class);
                    startActivity(intent);
                }
            });
            return contentView;
        }
    

    核心代码 :

    Intent intent = new Intent(getActivity(), About.class);

    startActivity(intent);

    展开全文
  • 利用fragment实现界面跳转 任务要求 利用fragment实现界面跳转功能,完成效果如下图所示 图片1 我的想法是xml文件里设置Button。再创建一个fragment文件。java文件中动态加载fragment完成第一张效果。点击...

    利用fragment实现界面跳转


    • 任务要求
      利用fragment实现界面跳转功能,完成效果如下图所示
      图片11126685-20170418220426946-80018486.png

    我的想法是在xml文件里设置Button。再创建一个fragment文件。在java文件中动态加载fragment完成第一张效果。点击按钮后在动态加载一张fragment实现setcontent方法改写内容字符串。点击返回键返回第一张fragment
    xml文件

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.example.administrator.interfacejunmp.MainActivity">
    
       <LinearLayout
           android:layout_width="match_parent"
           android:layout_height="wrap_content"
           android:orientation="horizontal"
           android:layout_alignParentBottom="true">
           <Button
               android:id="@+id/first"
               android:layout_width="match_parent"
               android:layout_height="wrap_content"
               style="@style/ZT1"/>
       </LinearLayout>
    </RelativeLayout>

    fragment文件

    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context="com.example.administrator.interfacejunmp.MyFragment">
    
        <!-- TODO: Update blank fragment layout -->
        <TextView
            android:id="@+id/txt_show"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="@string/this_is_first_fragment"
            android:gravity="center"
            style="@style/ZT3"/>
    </FrameLayout>

    java代码
    activity

    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
        private MyFragment g1;
        private Button first;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button first = (Button)findViewById(R.id.first);
            first.setOnClickListener(this);
            FragmentManager ft = getFragmentManager();
            FragmentTransaction fc= ft.beginTransaction();
            g1 = new MyFragment();
            fc.add(R.id.activity_main,g1);
            fc.commit();
    
        }
    
        @Override
        public void onClick(View v){
            FragmentManager FragmentManager = getFragmentManager();
            FragmentTransaction fTransaction = FragmentManager.beginTransaction();
            switch(v.getId()){
                case R.id.first:
                    if(g1!=null){
                        g1 = new MyFragment();
                        g1.setContent("This is second fragment!");
                        fTransaction.replace(R.id.activity_main,g1);
                        fTransaction.commit();
                    }
            }
        }
    
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){
                FragmentManager manager = getFragmentManager();
                FragmentTransaction transaction = manager.beginTransaction();
                g1 = new MyFragment();
                transaction.replace(R.id.activity_main,g1);
                transaction.commit();
            }
            return super.onKeyDown(keyCode, event);
        }
    }

    fragment代码

    public class MyFragment extends Fragment {
        private String content;
    
        public MyFragment() {
            String s = "This is first fragment!";
            content = s;
        }
    
        public void setContent(String content){
            this.content = content;
        }
    
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                 Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.fragment_my, container, false);
            TextView show = (TextView)view.findViewById(R.id.txt_show);
            show.setText(content);
            return view;
        }
    }

    实现图:1126685-20170418220438821-1817243073.png1126685-20170418220447493-678362773.png1126685-20170418220457071-1071673186.png

    转载于:https://www.cnblogs.com/air-java/p/6730810.html

    展开全文
  • 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); ...
  • Fragment实现界面跳转

    2017-04-18 20:35:00
    实现界面跳转来显示界面 主要通过fragment实现 package com.example.bwqpzy.fragment1; import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import ...
  • 实现Activity 之间以及 fragment 之间 共享元素 平滑动画过渡跳转,实现界面跳转动画
  • Activity中加载不同的fragment /Fragment中加载不同的fragment主Activity中加载(切换)多个fragment(也可以理解为activity跳转fragment)或主fragment中加载(切换)多个fragmentActivity布局中要有一个fragment...
  • 在fragment跳转到activity不能像activity跳acticity那样设置intent,实现fragment跳转到activity要使用getActivity(); Intent intent = new Intent(getActivity(),TestAty.class); startActivity(intent);通过...
  • android+Fragment实现页面的局部跳转

    热门讨论 2013-03-05 17:05:36
    android平板电脑开发,使用Fragment实现页面的局部跳转,像管理系统一样,点击左边的连接实现右边页面的跳转
  • 所要实现的效果如图, ...2.点击忘记密码进入验证页(Fragment)——>图2,  继续点击下一步进入修改密码页(Fragment)——>图3, ...3.即实现Activity——>Fragment——>Fragment——>Fragment——>Activity
  • 自己项目中用到fragment搭建框架,从网上找得一个demo,实现activity与fragment相互传值;fragmentfragment跳转。跟大家分享
  • fragment与activity及两个fragment之间的跳转实现

    万次阅读 多人点赞 2015-06-14 11:34:57
    应用的交互中,我可能需要实现: 从当前的fragment跳转到另一个fragment 从当前的fragment跳转到一个activity中 从当前的activity跳转到一个fragment中 网上提供的思路较多,这里总结了一套自己的方法。
  • Android Fragment 实现页面跳转

    千次阅读 2015-01-30 10:32:33
    首先要定义好要切换的容器布局文件(就是哪个布局文件里进行切换) activity_frame.xml xmlns:tools="http://schemas.android.com/tools" android:layout_wid
  • * 说明:主界面下方有四个Button,上方为Fragment,点击四个Button会跳转相应的Fragment。Demo */ public class FarmMainActivity extends Activity implements View.OnClickListener { //这里有四个Fragme
  • 假如要实现一个这样的功能,主页面MainActivity创建了四个底部Fragment,ABCD,点击B的时候有个按钮想要实现跳转D页面,可以这样实现。 首先要保证当前Activity启动模式为singleTask,详细查看 ...
  • 想要跳转的那个activity中写 private void switchFragment(Fragment f) { FragmentManager fragmentM = getSupportFragmentManager();//管理对象 FragmentTransaction trans = fragmentM.beginTransaction...
  • fragment事物跳转

    2017-08-22 10:54:51
    import android.graphics.Color; import android.os.Bundle;...import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentTransaction; impor
  • 方法一:直接getActivity,使用activity的fragmenttransation的replace... class OneFragment extends Fragment{ private Button btn; @Override public View onCreateView(LayoutInflater inflater, ViewGrou...
  • 应用的交互中,我可能需要实现: 从当前的fragment跳转到另一个fragment 从当前的fragment跳转到一个activity中 从当前的activity跳转到一个fragmentfragment切换 网上提供的思路较多,这里总结了一套自己...
  • 通过接口的方式实现fragment之间的跳转操作
  • 应用的交互中,我可能需要实现:从当前的fragment跳转到另一个fragment从当前的fragment跳转到一个activity中从当前的activity跳转到一个fragment中网上提供的思路较多,这里总结了一套自己的方法。一、从当前的...
  • * 通过接口的方式实现fragment之间的跳转操作 */ public class MainActivity extends Activity implements TestFragmentA.AbtnClikListener, TestFragmentB.BbtnonclickListener { private TestFragmentA ...
  • Fragment跳转问题

    2016-05-23 17:23:59
    Fragment和Activity的跳转问题

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,749
精华内容 6,699
关键字:

在fragment实现跳转