Activity間的跳轉(zhuǎn),startActivity與startActivityForResult
JreduCh04 2016-07-30
跳轉(zhuǎn) (由一個(gè)畫面跳轉(zhuǎn)到另一個(gè)畫面)
兩種方法:Intent中 startActivity、startActivityForResult。
后者可設(shè)置requestCode(申請(qǐng)碼)用于獲得返回值,即由一個(gè)畫面?zhèn)鲾?shù)據(jù)到
多個(gè)畫面(相同的數(shù)據(jù)),完成不同的功能,此時(shí)的requestCode的可通過判斷
來獲得返回值。
例;startActivity 在第一個(gè)畫面中設(shè)置一個(gè)按鈕,按下按鈕跳轉(zhuǎn)到第二個(gè)畫面。
lay_out中,相對(duì)布局中設(shè)置一個(gè)Button,id為bt1;
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.administrator.jreduch04.MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/bt1"
android:text="跳轉(zhuǎn)"
android:layout_below="@+id/textView"
android:layout_alignStart="@+id/bt2"
android:layout_marginTop="52dp" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/bt2"
android:text="跳轉(zhuǎn)返回結(jié)果"
android:layout_below="@+id/bt1"
android:layout_toEndOf="@+id/textView"
android:layout_marginTop="52dp" />
<TextView
android:layout_width="match_parent"
android:layout_height="100dp"
android:id="@+id/tv"
android:text="結(jié)果是:"
android:layout_alignParentBottom="true"
android:layout_alignParentEnd="true"
android:layout_marginBottom="102dp"
android:textColor="#ee1414"
android:textIsSelectable="false" />
</RelativeLayout>
MainActivity:
package com.example.administrator.jreduch04;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private Button bt1; //設(shè)置以一個(gè)Button,測(cè)試startActivity
private Button bt2; //設(shè)置第二個(gè)Button,測(cè)試startActivityForResult
private TextView tv; //設(shè)置一個(gè)TextView ,用于顯示測(cè)試startActivityForResult返回的值
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt1 = (Button) findViewById(R.id.bt1);//通過 findViewById找到
//Button,設(shè)置id的作用就是
//通過findViewByld找到;
tv = (TextView) findViewById(R.id.tv);
bt2 = (Button) findViewById(R.id.bt2);
bt1.setOnClickListener(new View.OnClickListener() { //設(shè)置一個(gè)bt1的
@Override //點(diǎn)擊事件
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent); //Intent的
//有兩個(gè)參數(shù),
} //MainActivity.this(第一個(gè)畫面)
}); //SecondActivity.class(第二個(gè)畫面)
button.setOnClickListener(new View.OnClickListener() { //設(shè)置一個(gè)Button,
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,ThActivity.class);
startActivityForResult(intent, 119);
}
});
bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("arg1",5); //intent.putExtra把名為arg1值為5,arg2
intent.putExtra("arg2", 6); //值為6,傳給SecondActivity
startActivityForResult(intent, 110); //110自己設(shè)置,即為申請(qǐng)碼
}
});
protected void onActivityResult(int requestCode, int resultCode, Intent data) { //與startActivityForResult配套
super.onActivityResult(requestCode, resultCode, data); //requestCode(申請(qǐng)碼), 用于判斷
Intent intent = getIntent(); //發(fā)出的哪個(gè)請(qǐng)求 resultCode(結(jié)果嗎),
if(requestCode ==110){ //110即為上面設(shè)置的 //可用來判斷是哪個(gè)Activity返回的數(shù)據(jù)
tv.setText("結(jié)果是加法:" + resultCode);} //resultCode為SecondActivity中設(shè)置的結(jié)果碼 ,但結(jié)果碼為"arg1+arg2",就實(shí)現(xiàn)了相加的操作
else if(requestCode ==119){
tv.setText("老師:"+data.getStringExtra("re"));//得到ThActivity中的EditView中的文本
}
}
}
package com.example.administrator.jreduch04;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
public class SecondActivity extends AppCompatActivity { //SecondActivity 第二個(gè)畫面
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent= getIntent(); //必須使用Intention方法
int arg1 = intent.getIntExtra("arg1",0);//調(diào)用方法intention.getIntExtra
int arg2 = intent.getIntExtra("arg2",0); //得到MainActivity穿來的
//arg1,arg2;第二個(gè)參數(shù)為沒得到
//setResult(120); //arg1,arg2時(shí)的數(shù)值。
if(arg1>0 && arg2>0){
setResult(arg1+arg2,intent); //setResult中的第一個(gè)參數(shù)為resultCode,第二個(gè)參數(shù)為Intention date,返回相加的數(shù)值,
finish(); //不能漏掉,否則不能返回第一個(gè)畫面
}
}
}
package com.example.administrator.jreduch04;
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.EditText;
import android.widget.TextView; //實(shí)現(xiàn)由MainActrivity跳轉(zhuǎn)到ThActivity
//輸入問題答案,再M(fèi)ainActivity中顯示
public class ThActivity extends AppCompatActivity { //設(shè)置第三個(gè)Activity
private EditText editText; //設(shè)置EditView,輸入問題答案
private Button button3; //按下button在MainActivity中顯示
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_th);
editText= (EditText) findViewById(R.id.editText);
button3 = (Button) findViewById(R.id.button3);
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=getIntent();
final String st= editText.getText().toString();//得到輸入到EditView中的文本
intent.putExtra("re", st); //調(diào)用intent.putExtra,返回
setResult(1, intent);
finish();
}
});
}
}

浙公網(wǎng)安備 33010602011771號(hào)