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

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

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

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

Android Studio

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

Q&A

解決済

1回答

226閲覧

androidstudioにおける、画面遷移に関して

satti5

総合スコア11

Java

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

Android Studio

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

0グッド

0クリップ

投稿2019/07/07 14:17

編集2019/07/09 12:46

前提・実現したいこと

1つのActivityで、2つのレイアウト間を遷移させたいのですが、上手くいきません。
setScreen~()と定義し、移動を試みています。


  1. 移動ボタン(button19)を押すことでactivity_sub.xmlからactivity_main4.xmlに移動する。
  2. editTextに入力した値をtextViewにセットし、確定ボタン(button17)を押すと、再びactivity_sub.xmlに戻る。

というシステムを作成したいです。
1の移動は実現できましたが、2の移動を試みようとボタンを押すと、落ちてしまいます。

該当のソースコード

JAVA

1 import android.app.Activity; 2 import android.os.Bundle; 3 import android.text.Editable; 4 import android.view.MotionEvent; 5 import android.view.View; 6 import android.view.ViewGroup; 7 import android.widget.Button; 8 import android.widget.EditText; 9 import android.widget.TextView; 10 11 public class SubActivity extends Activity { 12 private EditText editText; 13 private TextView textView; 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setScreenSub(); 18 } 19 20 private void setScreenSub() { 21 setContentView(R.layout.activity_sub); 22 Button sendButton = findViewById(R.id.button19); 23 sendButton.setOnClickListener(new View.OnClickListener() { 24 @Override 25 public void onClick(View view) { 26 setScreenMain(); 27 } 28 }); 29 30 private void setScreenMain() { 31 setContentView(R.layout.activity_main4); 32 Button returnButton = findViewById(R.id.button17); 33 returnButton.setOnClickListener(new View.OnClickListener() { 34 @Override 35 public void onClick(View view) { 36 textView = findViewById(R.id.textViewSub1); 37 editText = findViewById(R.id.editText); 38 String text = editText.getText().toString(); 39 textView.setText(text); 40 setScreenSub(); 41 } 42 }); 43 } 44}

試したこと

setScreenMain()内のonClickで
setScreenSub();
だけ宣言したら、画面は元に戻ります。

ですが、入力テキストをtextXiewにセットする部分のコードを入れると、落ちます。
java初心者のため、様々な本やサイトを参考に見ているのですが、解決策が分からず、質問させていただきました。

他にsetScreen~()を使用することなく、同じActivity間でレイアウトを移動させる方法もあるのでしょうか?
何でも良いのでアドバイスの方、よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

androidstudio3.0.1

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/07/07 15:00

すみません、本題ではないのですが、言葉の言い回しが気になりました。 > setScreen~()というものを使用 とありますが、人が作ったものを使っているので自分はわからない、という感じに見えます。 作ったのが質問者さんなら、「setScreen~()を作成し」とか「定義し」みたいな言い回しになるのではないでしょうか。
satti5

2019/07/09 12:48

質問をご覧いただき、有難うございました。 たしかに、自分で定義しておきながら”作成し”という表現はおかしいと感じ、修正しました。 ご指摘、有難うございます。
guest

回答1

0

ベストアンサー

R.id.button17、R.id.textViewSub1、R.id.editTextの3つのコンポーネントは、activity_main4.xml上に配置されているものなのでしょうか?(そうした問題を切り分けるためにも、XMLのソースコードも提示していただきたいです。)

これらのいずれかがactivity_sub.xml側にあるものだとしたら、setContentView(R.layout.activity_main4);の時点でsub側のコンポーネントは消滅しますので、findViewById()の結果はnullが返り、そのnullの変数を参照することでアプリは落ちるでしょう。

同じActivity間でレイアウトを移動させる方法もあるのでしょうか?

非常に古い資料を参考にされているようなのですが、現在のAndroidアプリケーションではそうした用途にはFragmentという要素を用いることが推奨されています。その方向で設計し直した方がいいかもしれません。

投稿2019/07/07 14:40

keicha_hrs

総合スコア6768

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

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

satti5

2019/07/09 13:01

ご解答有難うございます。 R.id.button17、R.id.editText、R.id.textViewSub1いずれも、activity_main4.xml上に配置しています。 findViewById()への理解が足りておらず、nullが帰る事に気づきませんでした。 また、古いものを参考にしており、fragmentへの理解もなかったので、今一度、Fragment要素の利用も考えながら勉強しなおしたいと思います。 その際、また分からないことがあれば再度、質問させていただきたいと思います。 有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問