Activity及Fragment之间的跳转直接跳转
基本使用方法
public class MainActivity extends AppCompatActivity {@Overrideprotected 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 {@Overrideprotected 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形成对应
- 更容易理解和管理一个出口,多个入口的情况
- 较方便维护传递数据的key和value(即key由目标Activity来定义,value是实际的来源)
public class MainActivity extends AppCompatActivity {@Overrideprotected 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 {@Overrideprotected 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;}@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);if (getArguments() != null) {pos = getArguments().getInt("pos");}}}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!