Activity及Fragment之间的跳转

Posted ihrthk

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Activity及Fragment之间的跳转相关的知识,希望对你有一定的参考价值。

Activity及Fragment之间的跳转

直接跳转

基本使用方法

public class MainActivity extends AppCompatActivity 

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    

    public void jump(View view) 
        Intent intent = new Intent(this, VideoPlayActivity.class);
        intent.putExtra("video_id", "1");
        startActivity(intent);
    

public class VideoPlayActivity extends Activity 
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_play);

        Intent intent = getIntent();
    

借助工具类

然而并没什么卵用

public static void startActivity(Context context, Class clazz,Bundle data) 
    Intent intent = new Intent(context, clazz);
    if(data != null)
        intent.putExtras(data);
    
    context.startActivity(intent);

推荐方案

  1. 把new Intent()放在目标Activity,这样可以onCreate里的getIntent形成对应
  2. 更容易理解和管理一个出口,多个入口的情况
  3. 较方便维护传递数据的key和value(即key由目标Activity来定义,value是实际的来源)
public class MainActivity extends AppCompatActivity 

    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    

    public void jump(View view) 
        startActivity(VideoPlayActivity.newIntent(this, "1"));
    

public class VideoPlayActivity extends Activity 
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_video_play);

    

    public static Intent newIntent(Context context, String vid) 
        Intent intent = new Intent(context, VideoPlayActivity.class);
        intent.putExtra("video_id", vid);
        return intent;
    

Fragment跳转

  1. 首先需要一个空的构造方法,Fragment恢复重建要使用。
  2. 使用newInstance代替构造方法传参
  3. 在Fragment.onCreate方法获取实参
public class MainFragment

    public MainFragment() 
        // Required empty public constructor
    

    public static MainFragment newInstance(int pos) 
        MainFragment fragment = new MainFragment();
        Bundle args = new Bundle();
        args.putInt("pos", pos);
        fragment.setArguments(args);
        return fragment;
    

    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        if (getArguments() != null) 
            pos = getArguments().getInt("pos");
        
    

以上是关于Activity及Fragment之间的跳转的主要内容,如果未能解决你的问题,请参考以下文章

fragment与activity及两个fragment之间的跳转实现

activity怎么跳转到fragment

安卓activity怎样跳转到fragment

如何从一个activity中跳转到一个fragment

android-----实现不两个不同的activity的跳转和数据传递

Android从Fragment跳转到Activity