2017-10-13 7 views
-1

J'essaie de faire en sorte que l'affichage de texte soit l'objet que j'ai sélectionné, mais le code que j'ai essayé de mettre en œuvre n'a pas fonctionné. J'essaie également de comprendre comment afficher l'élément final sélectionné - Il y a une liste principale, et après qu'un élément est sélectionné dans la liste principale, il vous faudra une autre liste où vous pouvez faire votre sélection finale (Main2activity et le main3activity sont les noms des activités avec les sélections finales de la liste). Voici mon code:Afficher un élément sélectionné de la liste à la vue du texte

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

toute erreur que vous obtenez ?? –

+0

Pourquoi avez-vous utilisé "startActivityForResult" ?? passez-vous la position de l'adaptateur avec "startActivityForResult (myintent, 1);" ce code ?? –

+0

Vous ne montrez que votre MainActivity, que je suppose être l'activité qui est lancée lorsque vous démarrez votre application. Alors qu'est-ce que vous attendez de trouver dans 'value' de ce morceau de code' String value = myintent.getStringExtra ("myintent"); '? – Barns

Répondre

0

Veuillez noter que vous ne pouvez pas utiliser directement cet exemple de code. Vous devrez apporter des modifications en fonction de ce que vous avez dans vos autres activités Main2Activity et Main3Activity. Tout d'abord, supprimez ces deux lignes de code de votre MainActivity, puisque je ne vous vois pas envoyer votre MainActivity n'importe quoi.

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

Dans la méthode onItemClick soit Main2Activity ou Main3Activity récupérer la valeur de votre sélection: de l'une des autres activités

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(); 
    }); 
} 

Dans votre MainActivity vous devez obtenir les résultats. Vous devez donc utiliser la méthode surchargée 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()); 
    } 
} 

Vous devez définir un code de demande dans votre MainActivity:

private static final String REQUEST_CODE_MAIN = 1524; 

1524 est aléatoire, mais il doit être unique.

Vous devez également définir à l'intérieur de votre classe MainActivity afin qu'il soit visible par onActivityResult.

private TextView textview; 

Et puis à l'intérieur onCreate placèrent comme ceci:

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

De votre MainActivity dans votre onItemClick utiliser pour appeler les autres activités:

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