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

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

新規登録して質問してみよう
ただいま回答率
85.50%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Java

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

Android

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

Android Studio

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

Q&A

解決済

3回答

1333閲覧

Android Studio 初心者です。遷移先の値をデータとして返したいのですが、うまくいきません。

takusuke

総合スコア16

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2019/05/11 19:24

編集2019/05/11 19:29

Intent を用いてbackボタンを押すタイミングで遷移先の値を返したいです。

以下に遷移前のアクティビティのコードを載せます。

SubActivity

1package com.example.tokoroshingo.myapplication; 2 3import android.content.Intent; 4import android.support.v7.app.AppCompatActivity; 5 6(中略) 7 8public class SubActivity3 extends AppCompatActivity { 9 10 public static final String EXTRA_MESSAGE 11// = "com.example.testactivitytrasdata.MESSAGE"; 12 = "YourPackageName.MESSAGE"; 13 static final int RESULT_CH1 = 1000; 14 private TextView text1; 15 16 @Override 17 protected void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.activity_sub3); 20 21 (中略) 22 23 text1 = findViewById(R.id.ch_textView1); 24 text1.setText("温度"); 25 26 (中略) 27 28 } 29 30 // CH1 からの返しの結果を受け取る 31 protected void onActivityResult( int requestCode, int resultCode, Intent intent) { 32 super.onActivityResult(requestCode, resultCode, intent); 33 34 if(resultCode == RESULT_OK && requestCode == RESULT_CH1 && 35 null != intent) { 36 String res = intent.getStringExtra(SubActivity3.EXTRA_MESSAGE); 37 text1.setText(res); 38 } 39 } 40 41} 42 43

次に遷移先のコードを以下に載せます。

CH1

1package com.example.tokoroshingo.myapplication; 2 3import android.content.Intent; 4import android.support.v7.app.AppCompatActivity; 5 6(中略) 7 8public class CH1 extends AppCompatActivity { 9 10 private String read; 11 12 (中略) 13 14 public CH1() { 15 } 16 17 @Override 18 protected void onCreate(Bundle savedInstanceState) { 19 super.onCreate(savedInstanceState); 20 21 (中略) 22 23 Button returnButton5 = findViewById(R.id.return_button); 24 returnButton5.setOnClickListener(new View.OnClickListener() { 25 @Override 26 public void onClick(View v) { 27 Intent intent = new Intent(); 28 29 //readにはString型の文字列が格納されている。これを遷移前のアクティビティに返したい 30 31 if (read!= null) { 32 intent.putExtra(SubActivity3.EXTRA_MESSAGE, read); 33 } 34 35 setResult(RESULT_OK, intent); 36 37 finish(); 38 39 } 40 }); 41 42 } 43} 44 45

コードが長くなってしまうため、短くしました。
これを実行し、バックボタンを押した際にデータが返されtext1に値が表示されるようにしたいのです。しかし、バックボタンを押してもtext1は"温度"のままで変更されません。
どこが間違っているのでしょうか、かれこれ1日考えてしまっています、、、。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

SubActivity3からCH1を起動するコード記載されていないのですが、
もしかしてstartActivity()を使っているのではないでしょうか?
呼び出したアクティビティから結果を受け取りたい場合、startActivityForResult()を使います。

公式サイトに使い方が載っているので、こちらをお読み下さい。
https://developer.android.com/training/basics/intents/result?hl=ja

投稿2019/05/12 05:21

mingos

総合スコア4025

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takusuke

2019/05/13 01:05

ありがとうございます! その通りでした汗 詳しく説明して頂いて感謝です。 勉強になりました!
guest

0

デバッグ実行して、ブレークポイントを設定して1行ずつ実行する作業は行ってみたでしょうか?

例えば、CH1のintentを設定するところで、

java

1 if (read!= null) { 2 intent.putExtra(SubActivity3.EXTRA_MESSAGE, read); 3 }

のifの行にブレークポイントを設定し、ifのブロックの中に本当に入っているのかとか、SubActivity3の

java

1 // CH1 からの返しの結果を受け取る 2 3 if(resultCode == RESULT_OK && requestCode == RESULT_CH1 && 4 null != intent) { 5 String res = intent.getStringExtra(SubActivity3.EXTRA_MESSAGE); 6 text1.setText(res); 7 }

のifの行にやはりブレークポイントを設定し、やはりifのブロックの中に入っていくか、入っていくなら変数resで受け取った値が想定通りになっているか、といったことを調べてみるべきでしょう。

もし、「onActivityResult()を使って遷移先の値を得る」という作業を成功させた実績自体がないのであれば、このプロジェクトは一旦置いておいて、もっと単純なプログラムを作ってonActivityResult()で値を受け取ることを成功させたという経験値を得ることが先決になるかもしれません。そこから見えてくることもあるでしょう。

投稿2019/05/11 23:31

keicha_hrs

総合スコア6766

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takusuke

2019/05/12 05:20

ありがとうございます!! デバッグがよく分からずの状態であったため、非常に勉強になりました。 これからも十分に使える知識であるため、ありがたいです。
guest

0

ベストアンサー

RESULT_CH1 リクエストコードを設定していないように見えます。

投稿2019/05/12 05:00

kamikaze.cappa

総合スコア558

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takusuke

2019/05/12 05:18

ありがとうございます!! その通りでした、設定したらうまくいきました。 感謝です!!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問