最近重新温故下Android基础,就一点点从基础再看一遍,参考的基础书籍是《第一行代码》,所以代码一点程度都跟书籍上面一样,这些代码不是我博客的重点,博客的重点是使用这些东西需要注意的地方,所有内容均是为了记录本人学习,如有侵权,请联系本人,谢谢!
1、Intent的显示跳转:
MainActivity跳转到MainActivity1:
//显示Intent
Intent intent=new Intent(MainActivity.this,MainActivity1.class);
intent.putExtra("data", "Hello MainActivity1");
//一般只需要跳转页面(可传值)采用
startActivity(intent);
//如果在MainActivity1中返回MainActivity页面需要传值(回调),则需要采用这个跳转,这样才能在最开始的页面的onActivityResult监听
startActivityForResult(intent,1);
2、Intent的隐式跳转:
btn2 = (Button) findViewById(R.id.btn_2);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//隐式Intent
//这里的值"com.wzq.demo_practice_1.ACTION_START"是你在manifest注册Activity里面的值,请看下面的代码
// Intent intent=new Intent("com.wzq.demo_practice_1.ACTION_START");
// startActivity(intent);
//隐式跳转浏览器
// Intent intent = new Intent(Intent.ACTION_VIEW);
// intent.setData(Uri.parse("http://www.baidu.com"));
// startActivity(intent);
//隐式跳转拨号界面
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:10086"));
startActivity(intent);
}
});
隐式跳转的Manifest里面配置的
<activity
android:name=".MainActivity2"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="com.wzq.demo_practice_1.ACTION_START"></action>
<category android:name="android.intent.category.DEFAULT"></category>
</intent-filter>
</activity>
3、页面间的传值:
传值:
Intent intent=new Intent(MainActivity.this,MainActivity1.class);
intent.putExtra("data", "Hello MainActivity1");
//一般只需要跳转页面(可传值)采用
startActivity(intent);
接收:
一般在onCreate方法里面接收值,方便在页面创建的时候需要通过数据进行逻辑处理等
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent=getIntent();
String value=intent.getStringExtra("data");
}
4、页面返回回调:
这里需要注意
1、就是调往该页面的方式必须是 startActivityForResult(intent,1);
2、两个页面的manifest配置的启动模式必须在同一个栈,且必须是“standard” --默认模式和“singleTop”–栈顶模式 这两种启动模式才能回调成功
android:launchMode="singleTop"
3、就是startActivityForResult()方法中的请求码必须大于等于0;
附上代码:
MainActivity1->MainActivity
MainActivity的onActivityResult方法:
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode){
case 1:
Log.d("111111", "1111111111111111111111");
if(resultCode==RESULT_OK){
String tig= data.getStringExtra("data_return");
Log.d("111111", tig);
}
break;
}
MainActivity1的代码:
btn1 = (Button) findViewById(R.id.btn_1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.putExtra("data_return", "Hello FirstActivity");
setResult(RESULT_OK, intent);
finish();
}
});
如果是需要在点击返回键的时候触发回调,可以重写这个方法:
@Override
public void onBackPressed() {
Intent intent = new Intent();
intent.putExtra("data_return", "Hello FirstActivity");
setResult(RESULT_OK, intent);
finish();
}
如果是在setResult在onPuase/onStop等地方设置,解决方案是
//重写onBackPressed
public void onBackPressed(){
Intent intent = new Intent();
intent.putExtra("data_return", "Hello FirstActivity");
setResult(RESULT_OK, intent);
super.onBackPressed();
}
嗯,本篇博客就到这里了 ,如果帮助到你就给我点个赞吧!谢谢大xiong dei