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