Android Activity與Fragment之間的跳轉(zhuǎn)實(shí)例詳解
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(); } }
借助工具類(lèi)
然而并沒(méi)什么卵用
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形成對(duì)應(yīng)
- 更容易理解和管理一個(gè)出口,多個(gè)入口的情況
- 較方便維護(hù)傳遞數(shù)據(jù)的key和value(即key由目標(biāo)Activity來(lái)定義,value是實(shí)際的來(lái)源)
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è)空的構(gòu)造方法,F(xiàn)ragment恢復(fù)重建要使用。
- 使用newInstance代替構(gòu)造方法傳參
- 在Fragment.onCreate方法獲取實(shí)參
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"); } } }
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
基于popupWindow實(shí)現(xiàn)懸浮半透明效果
這篇文章主要為大家詳細(xì)介紹了基于popupWindow實(shí)現(xiàn)懸浮半透明效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04Android強(qiáng)制設(shè)定橫屏?xí)r,SurfaceView一直黑屏
本文主要介紹了Android強(qiáng)制設(shè)定橫屏?xí)r,SurfaceView一直黑屏的方法。具有一定的參考作用,下面跟著小編一起來(lái)看下吧2017-01-01Android編程之ListPreference用法實(shí)例分析
這篇文章主要介紹了Android編程之ListPreference用法,結(jié)合實(shí)例形式較為詳細(xì)的分析說(shuō)明了ListPreference的功能、用法及相關(guān)注意事項(xiàng),需要的朋友可以參考下2015-12-12android listview進(jìn)階實(shí)例分享
這篇文章主要介紹了android listview進(jìn)階實(shí)例分享,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01詳解Androidstudio3.0 關(guān)于Gradle報(bào)錯(cuò)的問(wèn)題(小結(jié))
本篇文章主要介紹了詳解Androidstudio3.0 關(guān)于Gradle報(bào)錯(cuò)的問(wèn)題(小結(jié)),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10Android中利用viewflipper動(dòng)畫(huà)切換屏幕效果
這篇文章主要介紹了Android中利用viewflipper動(dòng)畫(huà)切換屏幕效果的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09實(shí)現(xiàn)activity管理器一次退出所有activity
退出所有Activity網(wǎng)上有很多很多種說(shuō)法,推薦的一種方法是自定義一個(gè)Activity管理器,來(lái)管理所有已打開(kāi)的Activity,要退出的時(shí)候再通過(guò)這個(gè)管理器來(lái)退出所有Activity,下面是一個(gè)簡(jiǎn)單的Activity管理器代碼2014-01-01Android實(shí)現(xiàn)快遞物流跟蹤布局效果
本篇文章主要介紹了Android實(shí)現(xiàn)快遞跟蹤布局效果,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-05-05