Android-Intent两种启动方式
来源:互联网 发布:网王之数据下的温柔 编辑:程序博客网 时间:2024/06/05 17:14
Android-Intent两种启动方式
Intent是安卓提供跳转页面的类,那么它有显式的跳转和隐式的跳转,个人认为显式和隐式并没有太大
的区别,所以我就只复习了显式跳转,然而显式的跳转也有两种方式,一个是从第一个页面跳转到第二
个页面,并且可以发送数据给第二个页面,第二张方式是回调方式,第二个页面销毁之后,回到第一个
页面可以发送数据。
startActivity(Intent intent) 第一种方式
startActivityForResult(Intent intent, int requestCode) 第二种方式
第一个页面:FActivity flayout.xml
第二个页面:SActivity slayout.xml
然后要在AndroidManifest.xml进行注册才可以实现跳转,不然会报错,切记!
进行注册:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.xieth.as.intentdemo" > <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name=".MainActivity" android:label="@string/app_name" > </activity> <activity android:name=".FActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".SActivity" android:label="@string/app_name" > </activity> </application></manifest>
在这里使用FActivity作为第一启动页面:
<activity android:name=".FActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
第一个页面的布局
flayout.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="第一种启动方式" android:id="@+id/button1" /> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="第二种启动方式" android:id="@+id/button2" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="接收第二个页面反馈的数据" android:textSize="18dp" android:textColor="@android:color/background_dark" android:id="@+id/textView" /></LinearLayout>
第二个页面的布局
slayout.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="返回第一个页面" android:id="@+id/button3" /></LinearLayout>
第一个页面的Activity
package com.xieth.as.intentdemo;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;import android.widget.TextView;/** * Created by YR on 2016/03/27. */public class FActivity extends AppCompatActivity implements View.OnClickListener { private Button btn1 = null; private Button btn2 = null; private TextView tv = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.flayout); initViews(); eventsViews(); } private void eventsViews() { btn1.setOnClickListener(this); btn2.setOnClickListener(this); } private void initViews() { btn1 = (Button) findViewById(R.id.button1); btn2 = (Button) findViewById(R.id.button2); tv = (TextView) findViewById(R.id.textView); } @Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.button1: Intent it1 = new Intent(this, SActivity.class); startActivity(it1); break; case R.id.button2: Intent it2 = new Intent(this, SActivity.class); startActivityForResult(it2, 1); break; default: break; } }}
可以看见两个按钮的监听事件是不同的。
第二个页面的活动:
package com.xieth.as.intentdemo;import android.content.Intent;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.widget.Button;/** * Created by YR on 2016/03/27. */public class SActivity extends AppCompatActivity implements View.OnClickListener { private Button btn3 = null; // 需要返回的数据 private String data = "第一个页面你好,我是第二个页面返回的数据."; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.slayout); initViews(); eventViews(); } private void eventViews() { btn3.setOnClickListener(this); } private void initViews() { btn3 = (Button) findViewById(R.id.button3); } @Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.button3: Intent it = new Intent(); it.putExtra("key", data); setResult(2, it); finish(); break; default: break; } }}
这样还是不可以的,我就犯了一个错误,那就是没有重写接收返回数据的方法,在第一个页面:
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1 && resultCode == 2) { tv.setText(data.getStringExtra("key").toString()); } }
运行效果:
但是当我们按返回键的时候,还是不可以把数据返回到第一个页面,我们可以重写onBackPressed方法
第二个页面:
@Override public void onClick(View v) { int id = v.getId(); switch (id) { case R.id.button3: getData(); break; default: break; } } private void getData() { Intent it = new Intent(); it.putExtra("key", data); setResult(2, it); finish(); } @Override public void onBackPressed() { getData(); }
把返回数据封装成一个方法即可。
运行效果:
鼠标位置有点偏。。
0 0
- Android-Intent两种启动方式
- Intent 启动 Activity的两种方式
- Android基础(四)——Activity的两种启动方式、Intent初探
- android-Intent启动activity的几种方式-隐式Intent
- Android使用Intent传递对象的两种方式
- Android Service两种启动方式
- Android Service两种启动方式
- Android Service 两种启动方式
- Android Service的两种启动方式
- Android Service两种启动方式
- Android Service的两种启动方式
- Android Service两种启动方式
- Android Service两种启动方式
- android启动界面的两种方式
- Android Service的两种启动方式
- Android Service两种启动方式
- android service的两种启动方式
- Android Service两种启动方式
- 机器学习:核函数的一个小题目
- NVIDIA Jetson TK1 rosrun rviz segmentation fault的解决方法
- (p241)活动选择
- Android系统服务
- java语言程序设计第十版(Introduce to java 10th) 课后习题 chapter7-33
- Android-Intent两种启动方式
- 熵权法简介
- 排序——堆排序(C++)
- 点击两次,才退出应用的程序代码
- MyEclipse快捷键大全
- 栈的链式存储结构及其基本运算的实现
- 【phpcms-v9】前台模板文件中{pc}标签的执行流程
- go语言捕获panic异常并转化为error
- Nginx