2017-10-13 9 views
-1

내가 선택한 항목을 textview에 표시하려하지만 구현하려고 시도한 코드가 작동하지 않습니다. 나는 또한 최종 항목이 어떻게 표시되는지 알아 내려고 노력 중이다. 주요 목록이 있고, 주 목록에서 항목을 선택한 후에는 최종 선택을 할 수있는 다른 목록으로 이동하게된다. (Main2activity와 main3activity는 최종 목록 선택이있는 활동의 이름입니다.) 여기 내 코드는 다음과 같습니다.listview에서 textview로 선택된 항목 표시

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을 보내는 것을 볼 수 없으므로이 두 줄의 코드를 MainActivity에서 삭제하십시오. 에서

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 당신이 다른 활동 중 하나에서 결과를 얻을해야합니다 Main2Activity 또는 Main3Activity 중 하나의 onItemClick 방법에서

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

은 선택의 값을 검색 할 수 있습니다. 따라서 오버라이드 된 메소드 onActivityResult을 사용해야합니다.

private static final String REQUEST_CODE_MAIN = 1524; 

1524

임의이지만 고유해야합니다 :

@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에 요청 코드를 설정해야합니다.

또한 에 표시되도록 MainActivity 클래스 내부를 정의해야합니다.

private TextView textview; 

그리고 onCreate 내부

는 다음과 같이 설정하십시오 : 당신의 MainActivity에서

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

당신의 onItemClick 다른 활동 호출이 사용 : 당신이 얻을

Intent myintent = new Intent(view.getContext(), Main2Activity.class); 
startActivityForResult(myintent, REQUEST_CODE_MAIN);