スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

  • Comments (Close): -
  • TrackBack (Close): -

データの受け渡し

EditTextを追加 の記事では、同じActivity内でEditTextに入力したデータをTextViewに受け渡しました。

今回は、Intentを使って、EditTextに入力したデータを異なるActivityにあるTextViewに受け渡します。

20110821_1
EditTextに文字を入力してボタンを押すと・・・


20110821_2
遷移先のActivityのTextViewに受け渡されます。



遷移元のActivity


まず遷移元のActivityですが、main.xmlとstrings.xmlは問題ないかと思います。

main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/textview1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/pleaseinput"
/>
<EditText
android:id="@+id/edittext1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</EditText>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/buttonclick"
android:layout_gravity="center">
</Button>
</LinearLayout>


strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, HelloAndroid!</string>
<string name="app_name">HelloAndroid</string>
<string name="pleaseinput">入力してください。</string>
<string name="buttonclick">Click</string>
</resources>



問題のHelloAndroid.javaは、putExtra()メソッドを新たに勉強します。

HelloAndroid.java
package sample.basic;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.view.View;
import android.content.Intent;
import android.widget.EditText;

public class HelloAndroid extends Activity{

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button button1 = (Button)findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(HelloAndroid.this, SubActivity.class);
EditText edittext1 = (EditText)findViewById(R.id.edittext1);
String input = edittext1.getText().toString();
intent.putExtra("INPUT", input);
startActivity(intent);
}
});
}
}


EditTextに入力されるべきデータは input という名前をつけました。

String input = edittext1.getText().toString();

getText()メソッドはEditable型を返すので(参照)、toString()メソッドでString型に変換します。

String型に変換するのは、Editable型のままではputExtra()メソッドの引数としてintentに情報を渡せないからです。

intent putExtra(String name, String value)

putExtra()メソッドの第一引数はキーワードです。遷移先のActivityは、このキーワードを指定して情報を受け取ることになります。

第二引数は、今回はStringですが数値や配列などさまざまな値を取り得ます(リファレンス)。

たとえて言うと、Intentが小包だとすると、putExtra()メソッドの第一引数はお客様番号、データ(今回はString)が小包の中身といったところでしょうか。

遷移先のActivity


レイアウトを指定するsub.xmlはTextViewがあるだけで、どうということはありません。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/textview2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>


SubActivity.javaですが、小包(Intent)を受け取った上で中身(String型のデータ)を検品するといった流れになります。

package sample.basic;

import android.app.Activity;
import android.os.Bundle;
import android.content.Intent;
import android.widget.TextView;

public class SubActivity extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sub);

Intent intent=getIntent();
String input=intent.getStringExtra("INPUT");
TextView textview2=(TextView) findViewById(R.id.textview2);
textview2.setText(input);
}

}


getIntent()メソッドでIntentを受け取り、getStringExtra()メソッドの引数に INPUT を指定してString型のオブジェクト input に格納します。

あとはsetText()メソッドでTextViewに埋め込むだけです。

関連記事
スポンサーサイト

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

Comments:

2012-07-19 Thu 17:21:33

このコメントは管理人のみ閲覧できます

Comment Form
Only inform the site author.

Trackback+Pingback:

TrackBack URL for this entry
http://androidhacker.blog94.fc2.com/tb.php/35-ced0027d
  • 閉じるボタン
レファレンス
月別アーカイブ
リンク
カテゴリ
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。