質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.47%

  • Java

    14111questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    6632questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Android Studio

    3791questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

EcitTextに入力された文字列を、別のActivity(Intent)のTextViewに表示させるには?

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 923

こちらを参考にしました。
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ページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

0

遷移前の画面でIntent#putExtraを使い値を入れて、遷移後の画面でIntent#getStringExtraで値を取得します。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/12 15:21

    一応自分なりにやってみたのですが、エラーが出てしまいます。

    変更箇所
    SubのonClick内にputExtra追加
    NameJobでgetStringExtra, onClick内にsetText追加など
    エラー文追加

    しました。ご回答いただけると幸いです。

    キャンセル

  • 2016/04/12 15:36

    異なるActivityのフィールドに対して
    直接アクセスできないから、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

    MainやSub等名前を出していますが、どこで何をやっているのか、どの画面からどの画面に遷移するのかは説明がないのでわかりません。

    要点だけ説明します。
    遷移元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

    ありがとうございます。
    少し自分でやってみます!

    キャンセル

0

答えはyonaさんが言われてます。

考え方としては、下記のような感じでしょうか。Androidにかぎらず汎用的に使える考え方です。

  1. 任意のViewのテキストをStringとしてgetする
  2. 遷移先へ渡すパラメータに詰める
  3. 遷移先へパラメータを渡す
  4. 画面遷移する
  5. 遷移先でパラメータを受け取る
  6. 受け取ったパラメータを任意のViewにsetする

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/04/12 15:23

    ご回答ありがとうございます。
    考え方の大枠は分かるのですが、具体的なやり方が間違っているようでエラーが出てしまいました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.47%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Java

    14111questions

    Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

  • Android

    6632questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • Android Studio

    3791questions

    Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。