Android Activity與Fragment之間的跳轉(zhuǎn)實例詳解
更新時間:2017年02月03日 16:47:28 投稿:lqh
這篇文章主要介紹了Android Activity與Fragment之間的跳轉(zhuǎn)實例詳解的相關(guān)資料,需要的朋友可以參考下
Activity及Fragment之間的跳轉(zhuǎn)
直接跳轉(zhuǎn)
基本使用方法
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);
}
推薦方案
- 把new Intent()放在目標(biāo)Activity,這樣可以onCreate里的getIntent形成對應(yīng)
- 更容易理解和管理一個出口,多個入口的情況
- 較方便維護傳遞數(shù)據(jù)的key和value(即key由目標(biāo)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跳轉(zhuǎn)
- 首先需要一個空的構(gòu)造方法,F(xiàn)ragment恢復(fù)重建要使用。
- 使用newInstance代替構(gòu)造方法傳參
- 在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");
}
}
}
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
相關(guān)文章
Android強制設(shè)定橫屏?xí)r,SurfaceView一直黑屏
本文主要介紹了Android強制設(shè)定橫屏?xí)r,SurfaceView一直黑屏的方法。具有一定的參考作用,下面跟著小編一起來看下吧2017-01-01
Android編程之ListPreference用法實例分析
這篇文章主要介紹了Android編程之ListPreference用法,結(jié)合實例形式較為詳細(xì)的分析說明了ListPreference的功能、用法及相關(guān)注意事項,需要的朋友可以參考下2015-12-12
詳解Androidstudio3.0 關(guān)于Gradle報錯的問題(小結(jié))
本篇文章主要介紹了詳解Androidstudio3.0 關(guān)于Gradle報錯的問題(小結(jié)),具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-10-10
實現(xiàn)activity管理器一次退出所有activity
退出所有Activity網(wǎng)上有很多很多種說法,推薦的一種方法是自定義一個Activity管理器,來管理所有已打開的Activity,要退出的時候再通過這個管理器來退出所有Activity,下面是一個簡單的Activity管理器代碼2014-01-01

