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

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

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

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

Android Studio

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

Q&A

解決済

1回答

1619閲覧

Androidアプリの画面遷移でのデータ受け渡し

zero5

総合スコア3

Java

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

Android Studio

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

0グッド

0クリップ

投稿2021/11/19 01:39

編集2021/11/19 05:54

困っていること・・
遷移元A(Main.java)
遷移先C(Sub2Activity.java)
AからCに画面遷移し、参加ボタン(画像4)を押してAに遷移してもリスト(lv2)に表示されない。

理想の動作・・・
遷移元A(Main.java)
遷移先C(Sub2Activity.java)
・CからAへ遷移するときに渡したデータをリスト(lv2)に追加し表示したい。

確認できていること
遷移元A(Main.java)
遷移先B(SubActivity.java)
遷移先C(Sub2Activity.java)
・AからBに遷移し、BからAに遷移するときに渡したデータをリスト(lv1)に追加し表示できている。
・AからCに遷移し、Cの参加ボタン(画像4)を押し、CからAに遷移したときには何も起こらない。その後、AからBに遷移し、BからAに遷移すると、先ほどCで参加ボタンをおした項目がリスト(lv2)に追加され表示される。(画像5)

画像1
イメージ説明

画像2
イメージ説明

画像3
イメージ説明

画像4
イメージ説明

画像5
イメージ説明

Java

1Main.java 2 3public class Main extends AppCompatActivity { 4 Button bt1, bt2; 5 ListView lv1, lv2; 6 ArrayList<String> content1, place1, date1, time1, number1; 7 ArrayList<String> content2, place2, date2, time2, number2; 8 9 protected void onCreate(Bundle savedInstanceState) { 10 super.onCreate(savedInstanceState); 11 LinearLayout ll = new LinearLayout(this); 12 ll.setOrientation(LinearLayout.VERTICAL); 13 setContentView(ll); 14 15 lv1 = new ListView(this); 16 lv2 = new ListView(this); 17 bt1 = new Button(this); 18 bt2 = new Button(this); 19 20 bt1.setText("募集作成"); 21 bt2.setText("参加予定"); 22 23 content1 = new ArrayList<String>(); 24 place1 = new ArrayList<String>(); 25 date1 = new ArrayList<String>(); 26 time1 = new ArrayList<String>(); 27 number1 = new ArrayList<String>(); 28 content2 = new ArrayList<String>(); 29 place2 = new ArrayList<String>(); 30 date2 = new ArrayList<String>(); 31 time2 = new ArrayList<String>(); 32 number2 = new ArrayList<String>(); 33 34 ArrayAdapter<String> ad1 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, content1); 35 lv1.setAdapter(ad1); 36 37 ArrayAdapter<String> ad2 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, content2); 38 lv2.setAdapter(ad2); 39 40 ll.addView(bt1); 41 ll.addView(lv1); 42 ll.addView(bt2); 43 ll.addView(lv2); 44 45 bt1.setOnClickListener(new ButtonClickListener()); 46 lv1.setOnItemClickListener(new ListViewClickListener()); 47 } 48 class ListViewClickListener implements OnItemClickListener{ 49 public void onItemClick(AdapterView<?>v, View iv, int pos, long id){ 50 Intent intent = new Intent(getApplicationContext(), Sub2Activity.class); 51 52 intent.putExtra("Content", content1.get(pos)); 53 intent.putExtra("Place", place1.get(pos)); 54 intent.putExtra("Date", date1.get(pos)); 55 intent.putExtra("Time", time1.get(pos)); 56 intent.putExtra("Number", number1.get(pos)); 57 58 int RESULT_SUBACTIVITY = 1; 59 startActivityForResult(intent, RESULT_SUBACTIVITY); 60 } 61 } 62 63 class ButtonClickListener implements OnClickListener { 64 public void onClick(View v) { 65 Intent intent = new Intent(getApplicationContext(), SubActivity.class); 66 int RESULT_SUBACTIVITY = 2; 67 startActivityForResult(intent, RESULT_SUBACTIVITY); 68 } 69 } 70 71 protected void onActivityResult(int requestCode, int resultCode, Intent intent) { 72 super.onActivityResult(requestCode, resultCode, intent); 73 switch (requestCode){ 74 case 1: 75 if (resultCode == RESULT_OK) { 76 String text2_view1 = intent.getStringExtra("Content2"); 77 String text2_view2 = intent.getStringExtra("Place2"); 78 String date_2 = intent.getStringExtra("Date2"); 79 String time_2 = intent.getStringExtra("Time2"); 80 String number_2 = intent.getStringExtra("Number2"); 81 82 content2.add(text2_view1); 83 place2.add(text2_view2); 84 date2.add(date_2); 85 time2.add(time_2); 86 number2.add(number_2); 87 } 88 break; 89 case 2: 90 if (resultCode == RESULT_OK) { 91 String text_view1 = intent.getStringExtra("Content"); 92 String text_view2 = intent.getStringExtra("Place"); 93 String date = intent.getStringExtra("Date"); 94 String time = intent.getStringExtra("Time"); 95 String number = intent.getStringExtra("Number"); 96 97 content1.add(text_view1); 98 place1.add(text_view2); 99 date1.add(date); 100 time1.add(time); 101 number1.add(number); 102 } 103 break; 104 default: 105 break; 106 } 107 } 108} 109

Java

1SubActivity.java 2 3public class SubActivity extends AppCompatActivity { 4 5 protected void onCreate(Bundle savedInstanceState) { 6 super.onCreate(savedInstanceState); 7 setContentView(R.layout.activity_sub); 8 9 Button button = (Button)findViewById(R.id.bt2); //ビューのidを用いてオブジェクトを関連付け 10 button.setOnClickListener(new ButtonClickListener()); //ボタンクリック時のリスナー登録 11 } 12 13 class ButtonClickListener implements View.OnClickListener { 14 public void onClick(View v){ 15 Intent intent = new Intent(getApplicationContext(), ExSample.class); 16      ・・・・ 17 18 setResult(RESULT_OK, intent); 19 20 finish(); 21 } 22 } 23}

Java

1Sub2Activity.java 2 3public class Sub2Activity extends AppCompatActivity { 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_sub2); 7 8 TextView text_view1 = findViewById(R.id.text_view1); 9 TextView text_view2 = findViewById(R.id.text_view2); 10 TextView date = findViewById(R.id.date); 11 TextView time = findViewById(R.id.time); 12 TextView number = findViewById(R.id.number); 13 14 String content1, place1, date1, time1, number1; 15 16 Intent intent = getIntent(); 17 content1 = intent.getStringExtra("Content"); 18 place1 = intent.getStringExtra("Place"); 19 date1 = intent.getStringExtra("Date"); 20 time1 = intent.getStringExtra("Time"); 21 number1 = intent.getStringExtra("Number"); 22 23 text_view1.setText(content1); 24 text_view2.setText(place1); 25 date.setText(date1); 26 time.setText(time1); 27 number.setText(number1); 28 29 Button button = (Button)findViewById(R.id.bt); //ビューのidを用いてオブジェクトを関連付け 30 Button button2 = (Button)findViewById(R.id.bt2); //ビューのidを用いてオブジェクトを関連付け 31 button.setOnClickListener(new ButtonClickListener()); //ボタンクリック時のリスナー登録 32 button2.setOnClickListener(new Button2ClickListener()); //ボタンクリック時のリスナー登録 33 } 34 35 class Button2ClickListener implements View.OnClickListener { 36 public void onClick(View v){ 37 Intent intentSub = new Intent(getApplicationContext(), ExSample.class); 38 finish(); 39 } 40 } 41 42 class ButtonClickListener implements View.OnClickListener { 43 public void onClick(View v){ 44 Intent intent = new Intent(getApplicationContext(), ExSample.class); 45 46 TextView text_view1 = findViewById(R.id.text_view1); 47 TextView text_view2 = findViewById(R.id.text_view2); 48 TextView date = findViewById(R.id.date); 49 TextView time = findViewById(R.id.time); 50 TextView number = findViewById(R.id.number); 51 52 intent.putExtra("Content2", text_view1.getText().toString()); 53 intent.putExtra("Place2", text_view2.getText().toString()); 54 intent.putExtra("Date2", date.getText().toString()); 55 intent.putExtra("Time2", time.getText().toString()); 56 intent.putExtra("Number2", number.getText().toString()); 57 58 setResult(RESULT_OK, intent); 59 60 finish(); 61 } 62 } 63 64}

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

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

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

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

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

jimbe

2021/11/19 13:31 編集

見た目は良いのですが読むと酷い内容のコードです。 main だけ xml を使わず、リストや変数構造・変数名等がテキトウです。 さておきまして。 何が起きているかはどこまで調査されていますでしょうか。 リストビューに表示するデータを更新する場合にどうすべきかは、お調べになっておられますでしょうか。
zero5

2021/11/19 03:03

返信ありがとうございます。Androidアプリ開発初心者であまり詳しくわかっていません。 参加ボタンを押したときに表示されませんがデータは送れているようです。 リストの項目を押し、Sub2Activityに画面遷移し、参加ボタンを押したときには、何も表示されず、その後、募集作成ボタンを押し、SubActivitiyに画面遷移し、募集ボタンを押して、メイン画面に遷移すると、lv1にSubActivityで追加したデータと、lv2に参加ボタンを押したもののデータが追加され表示されます。 参加ボタンを押し、メインに戻ったときにlv2に追加されすぐ表示できるようにしたいです。
jimbe

2021/11/19 03:15

リストにただ表示するのではなく後から追加変更して表示するのであれば、Adapterを (ArrayList を使うのではなく ListAdapter を継承したクラスを) 自作するほうが良いかと思います。
jimbe

2021/11/19 13:30 編集

私ならこんな感じにしますというのを作って見ました。 (デザインは気にしないでください^^; ) https://github.com/Jimbe-github/teratail-q370047 javaコード6本とレイアウト5本、色リソース1本です。 パッケージ名は com.teratail.q370047 です。(各javaコードの package を変えて頂けば変えられます。) activity では無く fragment で作っています。
guest

回答1

0

自己解決

swirch (requestcode){
case 1:
.......
ArrayAdapter ad = (ArrayAdapter) lv2.getAdapter();
ad.notifyDataSetChanged();

}
太文字の追加で解決しました。

投稿2021/11/19 06:46

zero5

総合スコア3

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問