AndroidでのActivity間のデータ転送とIntent使用
10498 ワード
AndroidでのActivity間のデータ転送とIntent使用
まずActivity:ActivityはAndroidの4つのコンポーネントの1つであり、Activityが参加する仕事の多くは操作インタフェースと関係があることを紹介します.私の次の記事ではActivityライフサイクルについて重点的に紹介しますが、この記事はこの部分を置いておきます.
Activityの起動方法について:通常、1つのプログラムには複数のActivityが含まれますが、1つのActivityだけがプログラムのメインエントリとなり、最初に起動したActivityです. 現在のActivityがプログラムが最初に起動したActivityでない場合、このActivityの起動方法は他のActivityによってしか起動できません. startActivity(Intent intent):現在のActivityはこのメソッドを呼び出し、他のActivity を直接起動します. startActivity ForResult(Intent intent,int requestCode):リクエストコードで新しいActivityを起動し、元のActivityは新しいActivityでデータの戻りを取得します.
Androidのクローズ方法について: finish():現在のActivity を終了 finishActivity(int requestCode):startActivity ForResultメソッドで起動したActivity を終了します.
Bundleを使用してActivity間でデータを交換します.Activityを見る前のジャンプはパラメータintentまで役立ちます.これは実は信使で、Activity間のデータ交換の媒介で、主にintentにデータを入れます.
Androidはintentに多くのputとgetメソッドを提供してデータのアクセスを行いますが、Bundleという非常に便利なものがあります.それはintentの中の簡単なパケットです.intentを直接使ってデータにアクセスすると混乱しますので、bundleにデータをパッケージしてもらいます.intentも主にbundleでデータを携帯します.注意:Bundleオブジェクトが作成されていない場合、Intentにデータを格納すると、Intentは独自にBundleオブジェクトを作成し、Bundleにデータを格納します.
以前はプロジェクトをしていたときにログイン画面にBundleオブジェクトでログイン情報を格納し、ログイン完了後に現在のActivityを終了し、Intentで結果を新しいActivityに戻す
まずxmlレイアウトファイルについて説明します.
対応するMainActivityジャワファイル
MainActivityでは、2つのボタンが定義されています.1つは戻り値を持ち、もう1つは戻り値を持ちません.比較すると、2つのボタンは同じインタフェースの2番目のレイアウトにジャンプしていることがわかります.
2番目のインタフェースのコード:
まずActivity:ActivityはAndroidの4つのコンポーネントの1つであり、Activityが参加する仕事の多くは操作インタフェースと関係があることを紹介します.私の次の記事ではActivityライフサイクルについて重点的に紹介しますが、この記事はこの部分を置いておきます.
Activityの起動方法について:
Androidのクローズ方法について:
Bundleを使用してActivity間でデータを交換します.Activityを見る前のジャンプはパラメータintentまで役立ちます.これは実は信使で、Activity間のデータ交換の媒介で、主にintentにデータを入れます.
Androidはintentに多くのputとgetメソッドを提供してデータのアクセスを行いますが、Bundleという非常に便利なものがあります.それはintentの中の簡単なパケットです.intentを直接使ってデータにアクセスすると混乱しますので、bundleにデータをパッケージしてもらいます.intentも主にbundleでデータを携帯します.注意:Bundleオブジェクトが作成されていない場合、Intentにデータを格納すると、Intentは独自にBundleオブジェクトを作成し、Bundleにデータを格納します.
以前はプロジェクトをしていたときにログイン画面にBundleオブジェクトでログイン情報を格納し、ログイン完了後に現在のActivityを終了し、Intentで結果を新しいActivityに戻す
まずxmlレイアウトファイルについて説明します.
"1.0" encoding="utf-8"?>
"http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
対応するMainActivityジャワファイル
import android.content.Intent;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import android.app.Activity;
import android.widget.Button;
import android.widget.Toast;
import java.util.Timer;
import java.util.TimerTask;
public class MainActivity extends AppCompatActivity {
private Button bt1;
private Button bt2;
private String getresult;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first);
bt1 = (Button) findViewById(R.id.button_first1);
bt2 = (Button) findViewById(R.id.button_first2);
bt1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(MainActivity.this,second.class);
startActivity(intent);
}
});
bt2.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view){
Intent intent= new Intent(MainActivity.this,second.class);
// startActivityForResultl ,1
startActivityForResult(intent,1);
}
});
}
/*
startActivityForResultl Code 1 requestCode
onActivityResult resultCode
Intent data
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1 && resultCode == 2) {
Log.d("TAG", "aaaaa");
// data key
Bundle data2 = getIntent().getExtras();
getresult = data.getStringExtra("data");
}
}
}
MainActivityでは、2つのボタンが定義されています.1つは戻り値を持ち、もう1つは戻り値を持ちません.比較すると、2つのボタンは同じインタフェースの2番目のレイアウトにジャンプしていることがわかります.
"1.0" encoding="utf-8"?>
"http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
"match_parent"
android:layout_height="wrap_content"
android:text=" "
android:id="@+id/button_second1"
android:layout_gravity="center_horizontal" />
2番目のインタフェースのコード:
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import java.util.Timer;
import java.util.TimerTask;
/**
* Created by Administrator on 2016/7/31 0031.
*/
public class second extends AppCompatActivity {
private Button bt2;
private String returndata = " second";
@Override
public void onCreate (Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
bt2 = (Button) findViewById(R.id.button_second2);
bt2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent data = getIntent();
data.putExtra("data", returndata);
// setResult 2 ,data Intent
setResult(2, data);
Log.d("TAG", " ");
//
finish();
}
});