EcitTextに入力された文字列を、別のActivity(Intent)のTextViewに表示させるには?
- 評価
- クリップ 1
- VIEW 2,393
こちらを参考にしました。
http://yan-note.blogspot.jp/2010/09/android_4530.html
Sub
public class SubActivity extends AppCompatActivity{
public String name;
public String job;
public int image;
public String comment;
public TextView text;
public TextView text2;
private static final int SUBACTIVITY = 1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sub_activity);
android.support.v7.app.ActionBar actionbar = getSupportActionBar();
actionbar.setHomeButtonEnabled(true);
actionbar.setDisplayHomeAsUpEnabled(true);
text = (TextView) findViewById(R.id.textView);
text2 = (TextView) findViewById(R.id.textView2);
TextView text3 = (TextView) findViewById(R.id.textView3);
ImageView imageView = (ImageView) findViewById(R.id.imageView);
ListView listView = (ListView)findViewById(R.id.listView1);
Intent sub = getIntent();
name = sub.getStringExtra("list_names");
job = sub.getStringExtra("list_jobs");
image = sub.getIntExtra("list_images", R.drawable.human);
comment = sub.getStringExtra("list_comments");
text.setText(name);
text2.setText(job);
imageView.setImageResource(image);
text3.setText(comment);
text.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent njIntent = new Intent();
njIntent.putExtra("LIST_NAMES",name);
njIntent.putExtra("LIST_JOBS",job);
njIntent.putExtra("LIST_IMAGE",image);
njIntent.putExtra("LIST_COMMENT",comment);
njIntent.setClassName("com.example.tsuyoshiokaprofile", "com.example.tsuyoshiokaprofile.NameJobEditActivity");
startActivity(njIntent);
}
});
ーーーーーーー中略ーーーー
@Override
protected void onActivityResult (int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
if (requestCode == SUBACTIVITY) {
if (resultCode == RESULT_OK) {
text = (TextView) findViewById(R.id.textView);
text2 = (TextView) findViewById(R.id.textView2);
Intent njIntent = getIntent();
Bundle extras = intent.getExtras();
String editedName = njIntent.getStringExtra("NAME_INPUT");
String editedJob = njIntent.getStringExtra("JOB_INPUT");
text.setText(editedName);
text2.setText(editedJob);
Log.d("LogCat", "Log message");
}
}
}
NameJobEditActivity
package com.example.tsuyoshiokaprofile;
ーーーーーーーーーー略ーーーー
public class NameJobEditActivity extends AppCompatActivity{
EditText editName;
EditText editJob;
Button button;
String editedName;
String editedJob;
Intent njIntent;
String subName;
String subJob;
private static final int SUBACTIVITY = 1;
String subText;
String subText2;
int subImage;
String subComment;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.name_job_edit);
editName = (EditText) findViewById(R.id.editName);
editJob = (EditText) findViewById(R.id.editJob);
button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Inputされたのを取得
editedName = editName.getText().toString();
editedJob = editJob.getText().toString();
//保存を押すと、subに戻る。
Intent intent = new Intent();
intent.setClassName("com.example.tsuyoshiokaprofile", "com.example.tsuyoshiokaprofile.SubActivity");
//intentに入力された文字列を詰める
intent.putExtra("NAME_INPUT",editedName);
intent.putExtra("JOB_INPUT",editedJob);
//値を詰めたものをSubに渡して画面遷移する
startActivityForResult(intent, SUBACTIVITY);
}
});
}
}
Edit画面で入力し、ボタンを押すと、デフォルトの表示になってしまうのですがなぜでしょうか。。。
ボタンをタップするまではエラーなく動作していますが、記述は合ってますでしょうか?
(startActivityForResult, onActivityResultあたりが合ってるか不安です)
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
0
遷移前の画面でIntent#putExtraを使い値を入れて、遷移後の画面でIntent#getStringExtraで値を取得します。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
答えはyonaさんが言われてます。
考え方としては、下記のような感じでしょうか。Androidにかぎらず汎用的に使える考え方です。
- 任意のViewのテキストをStringとしてgetする
- 遷移先へ渡すパラメータに詰める
- 遷移先へパラメータを渡す
- 画面遷移する
- 遷移先でパラメータを受け取る
- 受け取ったパラメータを任意のViewにsetする
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
大文字、小文字は区別されたと思います。
name = sub.getStringExtra("list_names");
x njIntent.putExtra("LIST_NAMES",name);
O njIntent.putExtra("list_names",name);
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.32%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2016/04/12 15:21
変更箇所
SubのonClick内にputExtra追加
NameJobでgetStringExtra, onClick内にsetText追加など
エラー文追加
しました。ご回答いただけると幸いです。
2016/04/12 15:36
直接アクセスできないから、Intentを使ってデータを共有しようとしていることをまず理解してください。
NameJobEditActivityからSubActivityのフィールドにアクセスする処理は書いてはいけません。
subActivity.text.setText(editedName);
subActivity.text2.setText(editedJob);
1-SubActivityからIntentにデータを詰めてNameJobEditActivityをstartActivityForResultする。
2-NameJobEditActivityで、Intentからデータを取得して表示する。
3-NameJobEditActivityからSubActivityへ戻る時にIntentにデータを詰めて返す。
4-SubActivityのonActivityResultでNameJobEditActivityの戻りを取得する。
2016/04/12 20:00
ボタンをタップすると、テキストがなくなり、画像がデフォルトのものになっているようです。Main-Sub-NameJobと値を渡しているのが原因でしょうか?さっぱりわからなくなってしまいました。
修正箇所
NameJobEditActivityのクリックリスナー
SubActivityのクリックリスナーと、onActivityResult部分
画像追加
ーーー
>>2-NameJobEditActivityで、Intentからデータを取得して表示する。
の部分ですが、NameJobEditActivity側ではテキスト表示しないです。
Edit画面のみ実装し、inputされた文字列をSubに渡して画面を戻す(遷移)させようとしています。
2016/04/12 20:55
要点だけ説明します。
遷移元Activity:A
遷移先Activity:B
・Bにデータを渡す。
→AでIntent#putExtraを使い値をセットする。
・Aからデータを受け取る
→BでActivity#getIntent#getExtra系で値を受け取る。
・Bからデータを受け取りたい
→AでActivity#startActivityForResultを使いBに遷移する。データを受け取る箇所はAのonActivtyResult
・Aに値を返す。
→BでIntentに値をセットし、Activity#setResultしてからActivty#finishする。
2016/04/13 17:34
少し自分でやってみます!