跳轉頁面並返回
阿新 • • 發佈:2019-01-07
1.首先新建好專案,設定好圖示。
2.
這是應用自帶的建立Android頁面的方法,可以同時建立類hexml頁面,並將新頁面新增到activity標籤中。
3.activity_main.xml頁面
- <RelativeLayoutxmlns: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=".MainActivity">
- <Button
-
android:id
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true"
- android:layout_marginTop="156dp"
- android:onClick="toNewActivity"
-
android:text="toNewActivity"
- </RelativeLayout>
- /**
- * startActivityForSult(Intent intent,int requestCode); //intent為意圖,用於跳轉;requestCode為請求碼,可以認為代表跳轉事件起始頁面的編號
- * setResult(int resultCode,Intent data); //resultCode為結果碼,可以認為跳轉事件新頁面的編號,data為新頁面想要向起始頁面返回的資料
- * onResult(int requestCode,int resultCode,Intent data); //當新頁面帶著data資料往回跳轉時,會進入onResult方法
- */
- package com.example.returnvalue;
- import android.os.Bundle;
- import android.app.Activity;
- import android.content.Intent;
- import android.view.Menu;
- import android.view.View;
- import android.widget.Toast;
- publicclass MainActivity extends Activity {
- @Override
- protectedvoid onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- }
- publicvoid toNewActivity(View view){
- Intent intent=new Intent(this,NewActivity.class);
- startActivityForResult(intent,1); //將MainActivity頁面的請求碼定位1
- }
- @Override
- protectedvoid onActivityResult(int requestCode, int resultCode, Intent data) { //新頁面跳轉回來會進入該方法
- // TODO Auto-generated method stub
- super.onActivityResult(requestCode, resultCode, data);
- switch(requestCode){
- case1: //判斷是不是由MainActivity頁面進行請求的,如果是則執行case語句
- if(resultCode==RESULT_OK){ //判斷是不是由NewActivity頁面進行跳轉回來的,如果是則進入if語句
- if(data!=null){
- String returnData=data.getStringExtra("return_data");
- Toast.makeText(this,"return_data="+returnData,Toast.LENGTH_LONG).show();
- }
- }
- break;
- default:
- break;
- }
- }
- @Override
- publicboolean onCreateOptionsMenu(Menu menu) {
- // Inflate the menu; this adds items to the action bar if it is present.
- getMenuInflater().inflate(R.menu.main, menu);
- returntrue;
- }
- }
activity_new.xml頁面
- <RelativeLayoutxmlns: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=".NewActivity">
- <Button
- android:id="@+id/button1"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true"
- android:layout_marginTop="144dp"
- android:onClick="toFirstActivity"
- android:text="toFirstActivity"/>
- </RelativeLayout>
NewActivity.java頁面
- package com.example.returnvalue;
- import android.os.Bundle;
- import android.app.Activity;
- import android.content.Intent;
- import android.view.Menu;
- import android.view.View;
- publicclass NewActivity extends Activity {
- @Override
- protectedvoid onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_new);
- }
- publicvoid toFirstActivity(View view){
- Intent intent=new Intent();
- intent.putExtra("return_data","hello");
- setResult(RESULT_OK,intent); //將新頁面編號定義為RESULT_OK,也就是-1
- finish(); //關閉頁面,就是將最上面的Activity移出了棧,並沒有釋放佔用的資源
- }
- publicvoid onBackPressed(){
- //super.onBackPressed(); super.onBackPress()是執行系統的預設動作,就是退出當前Activity,所以當我們重寫這個函式時,需要將這一句去掉
- Intent intent=new Intent();
- intent.putExtra("return_data","hello");
- setResult(RESULT_OK,intent); //將新頁面編號定義為RESULT_OK,也就是-1
- finish(); //關閉頁面,就是將最上面的Activity移出了棧,並沒有釋放佔用的資源
- }
- }
4.這個例子中要注意重寫onBackPressed方法時要去掉super.onBackPressed。