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

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

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

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

Android Studio

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

Q&A

解決済

2回答

280閲覧

アクティビティから得た結果をListViewに表示したい

j06110611

総合スコア54

Java

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

Android Studio

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

0グッド

0クリップ

投稿2019/10/06 00:46

編集2019/10/06 08:36

MakeQuizActivityから得たString型の変数titleをListViewに表示したいのですが、ListViewに何も表示されずLogcatでエラーも出てこないです。何が原因なのかが分からないので、教えていただきたいです。

MainActivity

1public class MainActivity extends AppCompatActivity { 2 3 static ArrayList data = new ArrayList<>(); 4 private static final int REQUEST_CODE = 1; 5 6 @Override 7 protected void onActivityResult(int request_Code, int resultCode, Intent result){ 8 switch(request_Code){ 9 //MakeQuizActivityから戻ってきた場合 10 case(REQUEST_CODE): 11 //クイズを作るボタンを押して戻ってきたときの処理 12 if(resultCode == RESULT_OK){ 13 data.add(result.getStringExtra("INPUT_TILE")); 14 } 15 //押されなかったときの処理 16 else if(resultCode == RESULT_CANCELED){ 17 18 } 19 break; 20 default: 21 break; 22 } 23 } 24 protected void onCreate(Bundle savedInstanceState) { 25 super.onCreate(savedInstanceState); 26 setContentView(R.layout.activity_main); 27 28 // リスト項目とListViewを対応付けるArrayAdapterを用意する 29 final ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, data);; 30 // ListViewにArrayAdapterを設定する 31 ListView listView = (ListView) findViewById(R.id.listView); 32 listView.setAdapter(adapter); 33 Button button = (Button) findViewById(R.id.makeQuiz_Button1); 34 button.setOnClickListener(new View.OnClickListener() { 35 @Override 36 public void onClick(View v) { 37 Intent intent = new Intent(MainActivity.this, com.test.quizmaker.MakeQuizActivity.class); 38 startActivityForResult(intent, REQUEST_CODE); 39 } 40 }); 41 } 42} 43

MakeQuizActivity

1public class MakeQuizActivity extends AppCompatActivity { 2 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 setContentView(R.layout.activity_make_quiz); 7 8 Button button2 = (Button)findViewById(R.id.makeQuiz_Button2); 9 button2.setOnClickListener(new View.OnClickListener() { 10 @Override 11 public void onClick(View v) { 12 Intent intent = new Intent(MakeQuizActivity.this,com.test.quizmaker.MainActivity.class); 13 PreferenceManager pm = new PreferenceManager(); 14 SharedPreferences sp = getSharedPreferences("DataStore",MODE_PRIVATE); 15 SharedPreferences.Editor editor = sp.edit(); 16 pm.init(sp,editor); 17 String strTitle = ((EditText)findViewById(R.id.editText)).getText().toString(); 18 String strQuiz = ((EditText)findViewById(R.id.editText2)).getText().toString(); 19 String strAnswer = ((EditText)findViewById(R.id.editText3)).getText().toString(); 20 int count = sp.getInt("count",0) + 1; 21 pm.saveInt(count); 22 pm.saveString(strTitle, PreferenceManager.DataKeys.TITLE, String.valueOf(count)); 23 pm.saveString(strQuiz, PreferenceManager.DataKeys.QUIZ, String.valueOf(count)); 24 pm.saveString(strAnswer, PreferenceManager.DataKeys.ANSWER, String.valueOf(count)); 25 String title = sp.getString(PreferenceManager.DataKeys.TITLE.getValue() + String.valueOf(count), "Nothing"); 26 intent.putExtra("INPUT_TITLE", title); 27 setResult(RESULT_OK, intent); 28 finish(); 29 } 30 }); 31 } 32} 33 34コード

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2019/10/06 01:51

MainActivityとMakeQuizActivityが、お互いがお互いを生成しているので関係性が分からないんですが
jimbe

2019/10/06 02:41

マークダウンの「```」の後ろには, ファイル名ではなく言語(java)を記入してください. ファイル名は外に書くか, 中にコメントとして書いてください.
keicha_hrs

2019/10/06 06:33

MainActivity main = new MainActivity(); ActivityはOSによって生成されるものであって、ユーザーがインスタンス化してはいけません。
guest

回答2

0

ベストアンサー

Java

1 //クイズを作るボタンを押して戻ってきたときの処理 2 if(resultCode == RESULT_OK){ 3 data.add(result.getStringExtra("INPUT_TILE")); 4 }

データ追加したけど、adapterにセットしてあるlistは変わってないし、
変わっていたとしてもnotifyDataSetChanged()を呼ばなければデータは更新されません。

投稿2019/10/06 12:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

j06110611

2019/10/16 14:39

すいません。よく理解できないです。 どうすればいいんでしょうか?
退会済みユーザー

退会済みユーザー

2019/10/20 08:29

ListViewの更新で調べれば出るようなことしか言ってないので、割愛させていただきます。
guest

0

アクティビティ間のやり取りの仕方をご確認ください.
startActivityForResult で起動されたアクティビティが終了して値を返す場合は,

setResult(RESULT_OK, intent);
startActivity(intent);
finish();

の真ん中, startActivity は不要なはずです.

投稿2019/10/06 02:45

jimbe

総合スコア12612

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

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

j06110611

2019/10/06 08:31

回答ありがとうございます。確かに不要でした。けど変わらず、Logcatにエラーも出ず、原因が分からないままです。
jimbe

2019/10/20 11:54

ArrayAdapter に渡した data は, ArrayAdapter から ListView にデータの変更を通知することによって表示されます. data を直接変更した場合, ArrayAdapter はその変更を知らず, 従って listView に通知もされないので, 表示は変わりません. このような場合 data は直接操作せず ArrayAdapter に任せることにし, ArrayAdapter のメソッドでデータの変更を行うようにすれば, 必要に応じて listView に通知が行われて表示が更新されると思います.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問