Android startActivityForResult()的用法
領導說我基礎差,我也沒反駁,知識忘記了,用到的時候查一下不久行了嗎,自己最近在回顧知識?好好的在補充一下,今天禮拜日,趁著空閑事件記錄一下簡單的知識
startActivityForResult() 也是經常使用到比如我們做城市選擇點擊城市,返回點擊的城市等等,
使用startActivityForResult()方法 你需要清楚
1?startActivityForResult(Intent intent, int requestCode)
Intent intent就和普通的activity跳轉一樣 可能是activity或者數據
int requestCode 這個是自己寫的標記,可能一個界面跳轉不懂的界面做區分的,不過這個雖說是自己隨意取的,但是是負數的時候
好像不行,
這個自己理解為跳轉界面并且添加一個標記
2?setResult(int resultCode, Intent data)
int resultCode 這個就是返回碼,用來標記成功或者失敗 可以自己寫一個或者使用官方的RESULT_OK
?Intent data 這個就是要返回的數據
下面是源碼的注釋
* @param resultCode The result code to propagate back to the originating * activity, often RESULT_CANCELED or RESULT_OK * @param data The data to propagate back to the originating activity.
?寫這個主要是返回數據
3?onActivityResult(requestCode, resultCode, data);
跳轉過去了,然后別的界面也返回了,這個就是接受值的作用了,?
requestCode 就是跳轉界面自己添加的標記區分
resultCode 這個是返回值界面的自己寫的狀態碼
data 是返回值界面值?
?
介紹完了 寫一個案例 練習一下
要實現的效果圖,就是姓名是第二個界面返回的
?
個人信息界面
package com.hly.mydemo.utils;import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.TextView;import com.hly.mydemo.R;public class InformatonActivity extends AppCompatActivity {public static final int REQUEST_NICK = 0x100;private TextView name;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.information_activity_layout);name = findViewById(R.id.name);findViewById(R.id.btn).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(InformatonActivity.this, NickNameActivity.class);startActivityForResult(intent, REQUEST_NICK);}});}@Overrideprotected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {super.onActivityResult(requestCode, resultCode, data);//需要先判斷resultcode返回的情況,然后還需要判斷requestcode屬于是那個activityif (resultCode == RESULT_OK &&requestCode == REQUEST_NICK) {name.setText(data.getStringExtra("nick"));}}
}
?
返回姓名界面
public class NickNameActivity extends AppCompatActivity{@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.nickname_activity_layout);findViewById(R.id.cons).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent();intent.putExtra("nick", "小牧");setResult(RESULT_OK, intent);finish();}});}
}
?
總結
以上是生活随笔為你收集整理的Android startActivityForResult()的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一个好听的汽车美容店名字
- 下一篇: 春风作品是谁画的呢?