国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android Activity與Fragment之間的跳轉實例詳解

2019-12-12 03:50:34
字體:
來源:轉載
供稿:網友

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跳轉

  • 首先需要一個空的構造方法,Fragment恢復重建要使用。
  • 使用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");    }  }}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 扶沟县| 安福县| 璧山县| 芦溪县| 高青县| 遂平县| 客服| 黄石市| 丽江市| 綦江县| 油尖旺区| 铜鼓县| 巴林左旗| 盱眙县| 乐安县| 遂川县| 小金县| 和平区| 云和县| 马龙县| 溧水县| 万盛区| 军事| 崇明县| 五大连池市| 诏安县| 宣汉县| 正安县| 涟源市| 大余县| 财经| 乌鲁木齐市| 阳新县| 容城县| 南城县| 新泰市| 龙陵县| 海宁市| 慈溪市| 苏尼特左旗| 安远县|