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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

android intent参数是上次的结果,【Android】7.0 Intent向下一个活动传递数据、返回数据给上一个活动...

發(fā)布時(shí)間:2023/12/9 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android intent参数是上次的结果,【Android】7.0 Intent向下一个活动传递数据、返回数据给上一个活动... 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.0 可以利用Intent吧數(shù)據(jù)傳遞給上一個(gè)活動(dòng),新建一個(gè)叫“hellotest01”的項(xiàng)目。

新建活動(dòng)FirstActivity,勾選“Generate Layout File”和“Launcher Activity”。

image

修改AndroidMainifest.xml中的內(nèi)容:

android:name=".FirstActivity"

android:label="第一個(gè)活動(dòng)">

在布局文件activity_first.xml增減一個(gè)按鈕:<?xml ?version="1.0"?encoding="utf-8"?>

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".FirstActivity">

android:id="@+id/button_1"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="按鈕1"

/>

顯示Intent調(diào)用,FirstActivity .java:package?com.example.hellotest01;import?android.content.Intent;import?android.support.v7.app.AppCompatActivity;import?android.os.Bundle;import?android.view.View;import?android.widget.Button;public?class?FirstActivity?extends?AppCompatActivity?{????@Override

protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);

setContentView(R.layout.activity_first);

Button?button1?=?(Button)?findViewById(R.id.button_1);

button1.setOnClickListener(new?View.OnClickListener()?{????????????@Override

public?void?onClick(View?v)?{

String?data?=?"你好,活動(dòng)二";

Intent?intent?=?new?Intent(FirstActivity.this,SencondActivity.class);//????????????????intent提供一系列的putExtra()方法重載//????????????????第一個(gè)參數(shù)是鍵,方便目標(biāo)活動(dòng)接收時(shí)取值,第二個(gè)參數(shù)才是真正傳遞的數(shù)據(jù)。

intent.putExtra("extra_data",data);

startActivity(intent);

}

});

}

}

新建活動(dòng)SencondActivity,勾選“Generate Layout File”。

SencondActivity.java(負(fù)責(zé)接收,并用debug.d 打印):package?com.example.hellotest01;import?android.content.Intent;import?android.support.v7.app.AppCompatActivity;import?android.os.Bundle;import?android.util.Log;public?class?SencondActivity?extends?AppCompatActivity?{????@Override

protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);

setContentView(R.layout.activity_sencond);

Intent?intent?=?getIntent();

String?data?=?intent.getStringExtra("extra_data");

Log.d("**********活動(dòng)二**********",data);

}

}

運(yùn)行:

image

image

image

2.0 返回?cái)?shù)據(jù)剛給上一個(gè)活動(dòng)

新建活動(dòng)ThirdActivity,勾選“Generate Layout File”。

由于之前忘了給新建的活動(dòng)SecondActivity和ThirdActivity弄個(gè)名字,這里修改AndroidMainifest.xml中的內(nèi)容補(bǔ)上:

android:label="第三個(gè)活動(dòng)">

android:label="第二個(gè)活動(dòng)"/>

給活動(dòng)FhirdActivity布局增加一個(gè)Button,activity_third.xml:<?xml ?version="1.0"?encoding="utf-8"?>

xmlns:app="http://schemas.android.com/apk/res-auto"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".ThirdActivity">

android:id="@+id/button_3"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="按鈕3"?/>

SecondActivity.java(說(shuō)明解釋都在源代碼里面):package?com.example.hellotest01;import?android.content.Intent;import?android.support.annotation.Nullable;import?android.support.v7.app.AppCompatActivity;import?android.os.Bundle;import?android.util.Log;import?android.view.View;import?android.widget.Button;public?class?SencondActivity?extends?AppCompatActivity?{????@Override

protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);

setContentView(R.layout.activity_sencond);

Intent?intent?=?getIntent();

String?data?=?intent.getStringExtra("extra_data");

Log.d("**********活動(dòng)二**********",?data);

Button?button2?=?(Button)?findViewById(R.id.button_2);

button2.setOnClickListener(new?View.OnClickListener()?{????????????@Override

public?void?onClick(View?v)?{

String?data?=?"你好,活動(dòng)三";

Intent?intent?=?new?Intent(SencondActivity.this,?ThirdActivity.class);//????????????????用startActivityForResult啟動(dòng)活動(dòng)ThirdActivity,請(qǐng)求碼只需要一個(gè)唯一值即可,這里傳入1

startActivityForResult(intent,?1);

}

});

}????//????在活動(dòng)ThirdActivity被銷毀之后會(huì)回調(diào)上一個(gè)活動(dòng)的onActivityResult()方法,//????因此我們需要在活動(dòng)SencondActivity中重寫這個(gè)方法來(lái)得到返回的數(shù)據(jù)

@Override

protected?void?onActivityResult(int?requestCode,?int?resultCode,?@Nullable?Intent?data)?{????????//onActivityResult()?方法帶有三個(gè)參數(shù)//????????requestCode??在啟動(dòng)活動(dòng)中傳入的請(qǐng)求碼//????????resultCode???在返回?cái)?shù)據(jù)時(shí)傳入的處理結(jié)果//????????data?????????攜帶著返回?cái)?shù)據(jù)的Intent//????????由于在一個(gè)活動(dòng)中有可能調(diào)用onActivityResult()方法去啟動(dòng)很多不同的活動(dòng)//????????每一個(gè)活動(dòng)返回的數(shù)據(jù)都會(huì)調(diào)用onActivityResult()方法,//????????因此我們需要做的是檢查requestCode的值來(lái)判斷數(shù)據(jù)來(lái)源,確定數(shù)據(jù)是從ThirdActivity返回之后,//????????再通過(guò)resultCode的值來(lái)判斷處理結(jié)果是否成功//????????最后從data中取值并進(jìn)行數(shù)據(jù)操作。

switch?(requestCode)?{????????????case?1:????????????????if?(resultCode?==?RESULT_OK)?{

String?returnedData?=?data.getStringExtra("data_return");

Log.d("**********返回?cái)?shù)據(jù)為**********",?returnedData);

}????????????????break;????????????default:

}

}

}

ThirdActivity.java(說(shuō)明解釋都在源代碼里面):package?com.example.hellotest01;import?android.content.Intent;import?android.support.v7.app.AppCompatActivity;import?android.os.Bundle;import?android.view.View;import?android.widget.Button;public?class?ThirdActivity?extends?AppCompatActivity?{????@Override

protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);

setContentView(R.layout.activity_third);

Button?button3?=?(Button)?findViewById(R.id.button_3);

button3.setOnClickListener(new?View.OnClickListener()?{????????????@Override

public?void?onClick(View?v)?{//????????????????新建一個(gè)啟動(dòng)器,不過(guò)只用來(lái)傳遞數(shù)據(jù)而已,沒(méi)有任何意圖

Intent?intent?=?new?Intent();

intent.putExtra("data_return",?"你好,活動(dòng)二");//????????????????setResult()方法專門用于返回上一個(gè)為活動(dòng)數(shù)據(jù)的//????????????????第一個(gè)參數(shù)用于向上一個(gè)活動(dòng)返回處理結(jié)果,一般只使用RESULT_OK和RESULT_CANCELED這兩個(gè)值//????????????????第二個(gè)參數(shù)則把帶有數(shù)據(jù)的Intent傳遞回去,然后調(diào)用finish()方法銷毀當(dāng)前活動(dòng)

setResult(RESULT_OK,?intent);

finish();

}

});

}

}

完畢,運(yùn)行,因?yàn)榫蛣?chuàng)建活動(dòng)FirstActivity為主活動(dòng),所以需要一個(gè)個(gè)點(diǎn)過(guò)去,按鈕一 按鈕二 按鈕三:

image

image

image

image

image

3.0 當(dāng)然,這樣有個(gè)缺點(diǎn),如果用戶不是通過(guò)點(diǎn)擊按鈕,而是通過(guò)Back鍵(手機(jī)上的后撤/返回鍵)會(huì)到的活動(dòng)SecondActivity,這樣數(shù)據(jù)無(wú)法返回,解決方案:

在ThirdActivity.java中重寫onBackPressed()方法來(lái)解決:package?com.example.hellotest01;import?android.content.Intent;import?android.support.v7.app.AppCompatActivity;import?android.os.Bundle;import?android.view.View;import?android.widget.Button;public?class?ThirdActivity?extends?AppCompatActivity?{????@Override

protected?void?onCreate(Bundle?savedInstanceState)?{????????super.onCreate(savedInstanceState);

setContentView(R.layout.activity_third);

Button?button3?=?(Button)?findViewById(R.id.button_3);

button3.setOnClickListener(new?View.OnClickListener()?{????????????@Override

public?void?onClick(View?v)?{//????????????????新建一個(gè)啟動(dòng)器,不過(guò)只用來(lái)傳遞數(shù)據(jù)而已,沒(méi)有任何意圖

Intent?intent?=?new?Intent();

intent.putExtra("data_return",?"你好,活動(dòng)二,button");//????????????????setResult()方法專門用于返回上一個(gè)為活動(dòng)數(shù)據(jù)的//????????????????第一個(gè)參數(shù)用于向上一個(gè)活動(dòng)返回處理結(jié)果,一般只使用RESULT_OK和RESULT_CANCELED這兩個(gè)值//????????????????第二個(gè)參數(shù)則把帶有數(shù)據(jù)的Intent傳遞回去,然后調(diào)用finish()方法銷毀當(dāng)前活動(dòng)

setResult(RESULT_OK,?intent);

finish();

}

});

}????@Override

public?void?onBackPressed()?{

Intent?intent?=?new?Intent();

intent.putExtra("data_return","你好,活動(dòng)二,back");

setResult(RESULT_OK,intent);

finish();

}

}

運(yùn)行,點(diǎn)擊:按鈕一 按鈕二 按鈕三,這時(shí)候回到“活動(dòng)二”界面,再按下“按鈕二”,這時(shí)候點(diǎn)擊“Back鍵”:

image

image

image

image

image

image

作者:我睡醒剛剛

鏈接:https://www.jianshu.com/p/9b409e5f54df

總結(jié)

以上是生活随笔為你收集整理的android intent参数是上次的结果,【Android】7.0 Intent向下一个活动传递数据、返回数据给上一个活动...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。