2017-10-13 17 views
-1

私が選択したアイテムをテキストビューに表示しようとしましたが、実装しようとしたコードが機能しませんでした。私はまた、最終的なアイテムがどのように表示されているか把握しようとしています。メインリストがあり、メインリストからアイテムが選択された後、最終的に選択できる別のリストに移動します(Main2activityとmain3activityは、最終的なリスト選択を持つアクティビティの名前です)。ここに私のコードです:選択したアイテムをリストビューからテキストビューに表示

public class MainActivity extends AppCompatActivity { 

    String items[] = new String[]{ 
"Apple", "Orange", "Pear" 
}; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Intent myintent = getIntent(); 
     String value = myintent.getStringExtra("myintent"); 
     TextView textview = (TextView)findViewById(R.id.textView2); 
     textview.setText(value); 



     ListView listView = (ListView) findViewById(languageselector); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items); 
     listView.setAdapter(adapter); 
     listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 


      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       if (position==0){ 
       Intent myintent = new Intent(view.getContext(), Main2Activity.class); 
       startActivityForResult(myintent, 0); 
      } 
       if (position==1){ 
        Intent myintent = new Intent(view.getContext(), Main3Activity.class); 
        startActivityForResult(myintent, 1); 
       } 



      } 
      }); 
}} 
+0

エラーがあれば? –

+0

なぜ "startActivityForResult"を使用しましたか? "startActivityForResult(myintent、1);"でアダプターの位置を渡していますこのコード?? –

+0

MainActivityを表示するのは、あなたのアプリケーションを起動したときに起動されるアクティビティだと思います。それで、このコードのビットから 'value'でどのようなものが見つかると思いますか?String value = myintent.getStringExtra(" myintent ");'? – Barns

答えて

0

このサンプルコードを直接使用することはできませんのでご注意ください。他のアクティビティMain2ActivityMain3Activityにあるものに応じて変更する必要があります。

まず、あなたのMainActivityを送信することは表示されないため、この2行のコードをMainActivityから削除してください。 Main2ActivityまたはMain3Activityあなたの選択の値を取得するのいずれかの方法でonItemClick

Intent myintent = getIntent(); 
String value = myintent.getStringExtra("myintent"); 

:あなたは

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     // I use yourList because I do not know how you call 
     // your list in either Main2Activity or Main3Activity 
     // In MainActivity you called it items 
     selectionResult = yourList[position]; 

     //Now return that value back to the activity which called this activity 
     Intent intent = new Intent(); 
     intent.putExtra("myintent", selectionResult); 
     setResult(RESULT_OK, intent); 
     finish(); 
    }); 
} 

MainActivityあなたは他の活動の一つから結果を取得する必要があります。したがって、オーバーライドされたメソッドonActivityResultを使用する必要があります。

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    try{ 
     if (requestCode == REQUEST_CODE_MAIN) { 
      if(resultCode == RESULT_OK){ 
       // Here is where you get your results from Main2Activity or Main3Activity 
       String s = data.getStringExtra("myintent"); 
       if(!s.isEmpty){ 
        textview.setText(value); 
       } 
       else{ 
        Toast.makeText(MainActivity.this, "Don't know what happened", Toast.LENGTH_SHORT).show(); 
       } 
      } 
      if(resultCode == RESULT_CANCELED){ 
        Toast.makeText(MainActivity.this, "I was canceled", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } 
    catch (Exception ex){ 
     Log.e(TAG, ex.getMessage()); 
    } 
} 

あなたMainActivityでリクエストコードを設定する必要があります。

private static final String REQUEST_CODE_MAIN = 1524; 

1524はランダムであるが、それは一意である必要があります。

また、に表示されるように、MainActivityクラス内で定義する必要があります。

onCreate内部
private TextView textview; 

そして、このようにそれを設定します。

textview = (TextView)findViewById(R.id.textView2); 

あなたonItemClickであなたのMainActivityから、他の活動を呼び出すためにこれを使用する:あなたが得る

Intent myintent = new Intent(view.getContext(), Main2Activity.class); 
startActivityForResult(myintent, REQUEST_CODE_MAIN); 
関連する問題