2015年8月6日 星期四

[Android]初學 使用Inten在Activity傳值(一)

Main畫面:

點下widget1按鈕,會將 "from Main" 帶到 Second畫面

Second畫面 :

點上一頁按鈕,會回傳 "from widget1"到Main
如果不是點上一頁按鈕兒是透過其他方法回到前一頁,在Main會顯示 "無參數"

startActivityForResult()除了傳值之外,還會回傳一個requestCode
所以Main要加入onActivityResult()方法,來接收辨別是哪個Activity回傳的requestCode


參數一定是從A-->B , B-->A AB兩個Activity在溝通
傳回參數的時候,只會接收參數,畫面不會刷新成預設畫面


最後要記得在AndroidManifest.xml 註冊 Activity
  1. <activity android:name=".SecondActivityName"></activity>


public class MainActivity extends AppCompatActivity {
private Button widget1;
private int REQUEST_CODE;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
widget1 =(Button)findViewById(R.id.btnNext);
//下一頁
widget1.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v) {
Intent intent1 = new Intent();
intent1.setClass(MainActivity.this, widgetActivity.class);
intent1.putExtra("activityMain", "from Main");
//當 REQUEST_CODE =-1 等於執行 startActivity
// widgetActivity 回傳資料要使用 setResult
startActivityForResult(intent1,REQUEST_CODE);
//startActivity(intent1);
//MainActivity.this.finish();
}
});
}
//接收回傳值的 Function
@Override
protected void onActivityResult(int requestCode , int resultCode,Intent data)
{
if(requestCode == REQUEST_CODE)
{
if (resultCode == RESULT_OK){
String temp=null;
Bundle extras = data.getExtras();
if(extras != null)
{
temp = extras.getString("widget");
}
setTitle(temp);
}else
{
setTitle("無參數");
}
}
}
}
public class widgetActivity extends AppCompatActivity {
private Button prev;
private String data;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.widget);
prev=(Button)findViewById(R.id.btnPrev);
Bundle extras =getIntent().getExtras();
if(extras !=null)
{
data=extras.getString("activityMain");
setTitle("widget :" + data);
}else
{
setTitle("widget");
}
prev.setOnClickListener(new Button.OnClickListener(){
public void onClick(View v)
{
Intent intent =new Intent();
intent.setClass(widgetActivity.this,MainActivity.class);
// Bundle 傳遞 Data
Bundle bundle = new Bundle();
bundle.putString("widget","from widget1");
intent.putExtras(bundle);
setResult(RESULT_OK, intent);
finish();
}
});
}

沒有留言:

張貼留言