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

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

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

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

Android

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

Android Studio

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

Q&A

2回答

3165閲覧

Android開発 遷移先で呼ばれる度にintentの値を更新したい

tsh

総合スコア8

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2016/04/14 06:01

編集2022/01/12 10:55

こんにちは。プログラミングを始めたばかり故知識が浅いので分かりやすく解答をしていただけると嬉しいです。

いま制作しているアプリで明示的intentを使った画面遷移を行っているのですが、遷移元ActivityがputExtra()を使って渡す値を遷移先Activityで受け取ってTextViewに表示したいです。渡す値は毎回違う値を想定しています。

しかし何度か遷移させてみたところgetIntent()をして受け取った値は更新されず、TextViewには初めに受け取った値しか表示されません。

どうすれば想定した通りの動作をしてくれるか分からず調べたところonNewIntenT()やIntent.FLAG_ACTIVITY_NEW_TASKといった言葉が出てきましたが意味もよくわからず…これ以外でも構わないので、受け取るintentの値を更新する方法をどなたか教えてくださいm(;__)m

(追記)

final Button toTopButton = (Button)findViewById(R.id.toTopList);
toTopButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent toTopIntent = new Intent(ListActivity.this,MainActivity.class);
TextView item = (TextView)findViewById(R.id.listTime);
toTopIntent.putExtra("todayTop",item.getText().toString());
startActivity(toTopIntent);
}
});
これが遷移元のアクティビティで、別アクティビティのEditTextに入力された値をintentで受け取ってTextViewへ表示し、そのTextViewから値を取得して遷移先アクティビティへintentを使って渡しています。

regData = intent.getStringExtra("todayTop");

TextView textView = (TextView)findViewById(R.id.text); if(regData != null){ textView.setText(regData); }

こちらが遷移先アクティビティです。

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

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

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

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

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

abs123

2016/04/14 06:09

状態がいまいち把握しきれません、方法以前の問題かもしれないので、ソースコードの追加をお願いします。
tsh

2016/04/14 07:23

分かりにくくてすみません、コードを追記しましたm(;__)m
guest

回答2

0

Java

1toTopIntent.putExtra("todayTop",item.getText().toString());

Java

1regData = intent.getStringExtra("todayTop");

どちらかのクラスに定数として宣言し、使用するのが良いと思います。

先ほどの回答は忘れてください・・・

投稿2016/04/14 08:46

編集2016/04/14 09:59
abs123

総合スコア1280

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

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

yona

2016/04/14 09:41 編集

Javaの仕様では文字列リテラルは同一インスタンスになるのでハードコーディングしても大丈夫だと思います。 けれど、ハードコーディングは間違いの元なのでリファクタリングはした方がいいですね。
abs123

2016/04/14 10:12

そんな仕様があったとは・・・ 同じ文字列リテラル同士比較してtrue返ってくるのは知ってましたが、 クラス別でも大丈夫だったんですね・・・指摘ありがとうございます。
guest

0

遷移元Activity→A
遷移先Activity→B

AからBに遷移する時にAで毎回違う値をIntent#putExtraに詰めてActivity#startActivityを使って遷移しているんですよね?
BからAに戻り、さらにBに遷移する時にIntentに異なる値を設定して遷移していますか?
上記の通り実装しているなら毎回変わります。

コードの追記をお願いします。

投稿2016/04/14 06:13

yona

総合スコア18155

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

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

tsh

2016/04/14 07:27

回答をありがとうございます。コードの追記をしました。 yonaさんがいうように実装していると思うのですが値が変わってくれません…(;_;)
yona

2016/04/14 07:54

コードの一部分だけ見せられてもわかりません。 今回であればintentの取得方法がわかる箇所も追加すべきです。 せめてメソッド単位で貼り付けてください。 また、コードはコード専用の記述方法があるのでそちらに修正してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問