##直接跳轉(zhuǎn)
基本使用方法
```java
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);
}
}
```
##借助工具類
然而并沒什么卵用
```java
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()放在目標(biāo)Activity,這樣可以onCreate里的getIntent形成對應(yīng)
2. 更容易理解和管理`一個(gè)出口,多個(gè)入口`的情況
3. 較方便維護(hù)傳遞數(shù)據(jù)的key和value(即key由目標(biāo)Activity來定義,value是實(shí)際的來源)
```java
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)
1. 首先需要一個(gè)空的構(gòu)造方法账胧,F(xiàn)ragment恢復(fù)重建要使用比藻。
2. 使用newInstance代替構(gòu)造方法傳參
3. 在Fragment.onCreate方法獲取實(shí)參
```java
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");
}
}
}
```