日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

BUG系列:转让startActivityForResult()amp;onActivityResult()没有反应

發布時間:2025/3/14 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 BUG系列:转让startActivityForResult()amp;onActivityResult()没有反应 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前天遇到了一個麻煩,還真是麻煩啊。

我使用startActivityForResult()&onActivityResult()。由Activity-A 跳轉到Activity-B 頁面,然后在Activity-B頁面編輯完個人資料之后攜帶個人數據交回到Activity-A頁面。事實上非常easy的問題,可是 讓我沒有預料到的是居然出現了岔子。以下展示我的效果圖及正確的代碼:

這些代碼是作為編輯昵稱:<Activity-B頁面>

public class EditToNickNameAty extends Activity implements OnClickListener{private EditText edtNickName;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.aty_thedata_edit_nickname);findViewById(R.id.btn_back).setOnClickListener(this);edtNickName=(EditText) findViewById(R.id.edt_nickName);findViewById(R.id.img_nickNameCancell).setOnClickListener(this);findViewById(R.id.btnOk).setOnClickListener(this);}@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.img_nickNameCancell://昵稱清空設置鍵edtNickName.setText("");break;case R.id.btnOk:nickNameHandleViews();break;case R.id.btn_back:finish();overridePendingTransition(R.anim.loadout_from_enter,R.anim.loadout_from_exit);break;default:break;}}private void nickNameHandleViews() {// TODO Auto-generated method stubString result = edtNickName.getText().toString();Intent resultFor=new Intent(this, PersonalDataEditAty.class);if(TextUtils.isEmpty(result)){result = "";}Bundle data = new Bundle();data.putString("result", result);resultFor.putExtras(data);//設置結果并進行傳輸this.setResult(PersonalDataEditAty.ATY_CODE_NICKENAME, resultFor);this.finish();} }

Activity-B頁面:

跳轉button作跳轉監聽:

case R.id.lay_item_nikeName:Intent nickName = new Intent(this, EditToNickNameAty.class);startActivityForResult(nickName, 10);//ATY_CODE_NICKENAMEoverridePendingTransition(R.anim.loadin_from_enter,R.anim.loadin_from_exit);break;


接收從Activity-A攜帶過來的數據:

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stub if(resultCode==ATY_CODE_NICKENAME){//昵稱Log.d("json", "//昵稱"+data.getExtras().getString("result"));if(OperationTool.isNetWorkConnected(this)){resetNickName = data.getExtras().getString("result");get(mHandler, UrlFinalcons.url+"member_edit?

"+"token="+token+"&nick="+resetNickName, NormalFinalcons.NICK_NAME); } }


當中一些細節問題這里提一下:

在onActivityResult()。方法參數中參數--int resultCode? --int requestCode? --Intent data

當中,

resultCode:是Activity-A頁面 startActivityForResult(intent,resultCode); 中與該跳轉方法的第二個參數匹對且相等;

requestCode:是Activity-B頁面 setResult(requestCode, intent);中與該跳轉方法的第一個參數匹配且相等;

data:是Activity-B頁面 setResult(requestCode, intent);中與該跳轉方法的第二個參數匹配且相等。

注意:startActivityForResult(intent,resultCode);中的resultCode最好不要與setResult(requestCode, intent);中的requeCode相等。resultCode>0

最后解決實際問題:為什么我的全部的配置都做了。就是不能由B------->A的正常跳轉呢?

原因一:與 Activity 的載入模式(launchMode)有關;Activity的載入模式,在這樣的的跳轉的方式下要使用標準模式(我就是使用了 android:launchMode="singleTop"模式,結果不能正常跳轉)原因二:調用startActivityForResult的參數問題。即原先調用時這樣:startActivityForResult(intent, 0);是第二個參數的問題。該參數必須大于0才干在返回值,并激活onActivityResult方法。

原因三:在TabHost的子Activity中startActivityForResult調用其它Activity時候遭遇到onActivityResult方法不響應的問題;


解決方式:

1.通過父Activity啟動其它Activity;2.實現父Activity的onActivityResult方法,將該處接收到的請求轉發給當前活動的子Activity;3.自己定義一個轉發接口用來實現第2步中的轉發功能;4.子Activity中實現第3步接口中的方法用來接收返回信息;

?

代碼例如以下:

1.通過父Activity啟動其它Activity

getParent().startActivityForResult(new Intent(...), REQUEST_CODE);

2.實現父Activity的onActivityResult方法

@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// 獲取當前活動的Activity實例Activity subActivity = getLocalActivityManager().getCurrentActivity();//推斷是否實現返回值接口if (subActivity instanceof OnTabActivityResultListe<wbr>ner) {//獲取返回值接口實例OnTabActivityResultListe<wbr>ner listener = (OnTabActivityResultListe<wbr>ner) subActivity;//轉發請求到子Activitylistener.onTabActivityResult(requestCode, resultCode, data);}super.onActivityResult(requestCode, resultCode, data);}

3.自己定義接口

public interface OnTabActivityResultListener {public void onTabActivityResult(int requestCode, int resultCode, Intent data);}

4.子Activity須要實現onTabActivityResult方法

@Overridepublic void onTabActivityResult(int requestCode, int resultCode, Intent data) {if (requestCode == REQUEST_CODE && resultCode == RESULT_OK) {//實現該處邏輯...}} /** <span>凡是Activity本身含有上次父類的情況都不能直接使用startActivityForResult。而要通過getParent()。通過父類調用此方法。</span> */

?

版權聲明:本文博客原創文章,博客,未經同意,不得轉載。

轉載于:https://www.cnblogs.com/hrhguanli/p/4679738.html

總結

以上是生活随笔為你收集整理的BUG系列:转让startActivityForResult()amp;onActivityResult()没有反应的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 深夜福利视频网站 | 一区二区三区日韩视频 | 樱花动漫无圣光 | 欧美性生交xxxxx久久久 | 精品一区二区三区日韩 | 国产无码精品在线观看 | 久久久国产精品一区二区三区 | 最新免费av | 1级片在线观看 | 黑人黄色录像 | 性生活毛片 | 亚洲精品在线免费播放 | 精品一区精品二区 | 欧美人与动牲交a欧美精品 欧美三级在线看 | 久久99精品久久久久久噜噜 | 狠狠操夜夜操 | 国产免费一区二区三区在线观看 | 高清在线一区二区 | 日本黄网站色大片免费观看 | 欧美日韩中文字幕一区二区 | 91网站在线免费观看 | 熟女av一区二区 | 欧美成人手机在线 | 国产污视频在线观看 | 曰韩精品 | 免费在线观看黄网 | 久久久看 | 久久国产热| www.狠狠撸.com| 国产成人精品无码免费看在线 | 久久久www成人免费毛片 | 国产爽爽爽 | 91麻豆精品秘密入口 | 99re在线视频观看 | 日韩精品一区二区三区中文在线 | 韩国电影一区二区三区 | 久久超碰精品 | 国产91av在线| 国产一区二区三区精品视频 | 免费久久久久久 | 一区二区三区在线 | 亚洲大片精品 | 国产精品搬运 | 免费成人电影在线观看 | 欧美性猛交ⅹxx乱大交 | 欧美aaa在线观看 | 麻豆国产网站 | 亚洲天堂av电影 | 日本一区二区三区在线看 | 国产午夜福利视频在线观看 | 麻豆av一区二区三区在线观看 | 欧美黄色短视频 | 超碰在线c | 国产精品网友自拍 | 99中文字幕 | 男人的天堂久久久 | 国产精品综合网 | 欧美久久精品一级黑人c片 1000部多毛熟女毛茸茸 | 精品麻豆av | 亚洲色图在线播放 | 欧美福利网址 | 午夜欧美日韩 | 先锋av资源网 | 日本不卡一区二区三区在线观看 | 91激情在线观看 | 亚洲精品区 | 国产又粗又黄又爽又硬 | 影音先锋欧美在线 | 大尺度电影在线 | 国产一级免费在线观看 | 无码人妻aⅴ一区二区三区 国产高清一区二区三区四区 | 国产精品嫩草久久久久 | 成人午夜网址 | 久久性生活视频 | 九月婷婷丁香 | 色欧美日韩 | 中文在线免费 | 性少妇videosexfreexxx片 | 新狠狠干 | 国产黄色网 | 黄瓜视频在线免费观看 | 日本欧美韩国国产精品 | 999热精品| av东方在线 | 黄色一级国产 | 国产又黄又大又爽 | 拔插拔插华人 | 久久久久久网站 | 国产日韩精品一区 | 另类小说亚洲色图 | 中文人妻av久久人妻18 | 成人在线免费视频 | 伦理黄色片 | 超碰人人在线 | 国产黄网在线观看 | 一级精品视频 | 同性色老头性xxxx老头 | 国产探花一区二区 | 美国一级特黄 |