2017-07-06 1 views
0

Ich habe zwei Edittexte in MainActivity: und etTo. Wenn geklickt geht zu ListFrom Aktivität und etTo zu ListTo Aktivität. ListFrom und ListTo Aktivitäten enthalten Listview und nach der Auswahl eines Elements kommt es zurück zur Hauptaktivität und zeigt Ergebnisse in Edittexten an. Ich verwende MainActivity.putExtra("To",v); und etTo.setText(getIntent().getStringExtra("To"));, um Daten von einer Aktivität zu erhalten.Wie können beide Daten in Edittext angezeigt werden, ohne einen von ihnen zu verlieren?

Nach dem Klicken auf den ersten Bearbeitungstext, Auswahl eines Elements aus Listview und Rückkehr zur Hauptaktivität, wenn ich das gleiche für den zweiten Bearbeitungstext mache, wird der erste Bearbeitungstext leer. Und dasselbe, wenn ich den ersten mache, wird der zweite leer. FirstSecond

ListTo-Code

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_list_to); 


    etSearchTo=(EditText) findViewById(R.id.etSearchTo); 
    listViewTo=(ListView) findViewById(R.id.listViewTo); 


    initList(); 
    listViewTo.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      String v=""; 
      Intent intent=new Intent(ListTo.this,SearchRide.class); 
      switch (position) { 
       case 0: 
        v = items[0]; 
        break; 
       case 1: 
        v = items[1]; 
        break; 
       case 2: 
        v = items[2]; 
        break; 
       case 3: 
        v = items[3]; 
        break; 
       case 4: 
        v = items[4]; 
        break; 
       case 5: 
        v = items[5]; 
        break; 
      } 

      intent.putExtra("To",v); 
      startActivity(intent); 
     } 
    }); 

ListFrom-Code

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_list_from); 

    listView=(ListView) findViewById(R.id.listviewFrom); 
    editText=(EditText) findViewById(R.id.etsearchFrom); 





    initList(); 
    listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      String v=""; 
      Intent intent=new Intent(ListFrom.this,SearchRide.class); 
      switch (position) { 
       case 0: 
        v = items[0]; 
        break; 
       case 1: 
        v = items[1]; 
        break; 
       case 2: 
        v = items[2]; 
        break; 
       case 3: 
        v = items[3]; 
        break; 
       case 4: 
        v = items[4]; 
        break; 
       case 5: 
        v = items[5]; 
        break; 
      } 

      intent.putExtra("From",v); 
      startActivity(intent); 


     } 
    }); 

SearchRide als Hauptaktivität

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_search_ride); 





    etDate=(EditText) findViewById(R.id.etDate); 
    TextView tFrom=(TextView) findViewById(R.id.tFrom); 
    TextView tTo=(TextView) findViewById(R.id.tTo); 
    etFrom=(EditText) findViewById(R.id.etFrom); 
    etTo=(EditText) findViewById(R.id.etTo); 
    Button bSearch=(Button) findViewById(R.id.bSearch); 
    ImageView iplussign=(ImageView) findViewById(R.id.iplussign); 
    ImageView iminussign=(ImageView) findViewById(R.id.iminussign); 
    final TextView tNumber=(TextView) findViewById(R.id.tNumber); 

    etTo.setText(getIntent().getStringExtra("To")); 


    tNumber.setText(String.valueOf(p)); 
    iplussign.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(p<=9) { 
       p++; 
       tNumber.setText(String.valueOf(p)); 
      } 
     } 
    }); 
    iminussign.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(p>=2) { 
       p--; 
       tNumber.setText(String.valueOf(p)); 
      } 
     } 
    }); 

    etFrom.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent ListFrom=new Intent(SearchRide.this,ListFrom.class); 
      startActivity(ListFrom); 
     } 
    }); 
    etFrom.setText(getIntent().getStringExtra("From")); 

    etTo.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent ToList =new Intent(SearchRide.this,ListTo.class); 
      startActivity(ToList); 
     } 
    }); 
    etTo.setText(getIntent().getStringExtra("To")); 

    etDate.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      DatePickerDialog dialog= new DatePickerDialog(SearchRide.this,R.style.MyDatePickerStyle,listener,calendar.get(Calendar.DAY_OF_MONTH),calendar.get(Calendar.MONTH),calendar.get(Calendar.YEAR)); 
      dialog.getDatePicker().setMinDate(calendar.getTimeInMillis()); 
      dialog.show(); 
     } 
    }); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

} 
+1

Bitte nehmen Sie auf die Frage Code. – Ali

+1

Bitte posten Sie Ihre onCreate, onStart und onResume Methoden – TpoM6oH

+0

Posted. Ich habe keine OnStart und OnResume Methoden –

Antwort

0

Verwenden Sie startActivityForResult(), um ListFrom- und ListTo-Aktivitäten zu starten und das Ergebnis dieser Aktivitäten in der OnActivityResult() -Methode zu empfangen.

SearchRide als Hauptaktivität Code:

   protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_search_ride); 

       etDate=(EditText) findViewById(R.id.etDate); 
       TextView tFrom=(TextView) findViewById(R.id.tFrom); 
       TextView tTo=(TextView) findViewById(R.id.tTo); 
       etFrom=(EditText) findViewById(R.id.etFrom); 
       etTo=(EditText) findViewById(R.id.etTo); 
       Button bSearch=(Button) findViewById(R.id.bSearch); 
       ImageView iplussign=(ImageView) findViewById(R.id.iplussign); 
       ImageView iminussign=(ImageView) findViewById(R.id.iminussign); 
       final TextView tNumber=(TextView) findViewById(R.id.tNumber); 

       tNumber.setText(String.valueOf(p)); 
       iplussign.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         if(p<=9) { 
          p++; 
          tNumber.setText(String.valueOf(p)); 
         } 
        } 
       }); 

       iminussign.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         if(p>=2) { 
          p--; 
          tNumber.setText(String.valueOf(p)); 
         } 
        } 
       }); 

       etFrom.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         Intent ListFrom = new Intent(SearchRide.this,ListFrom.class); 
         startActivityForResult(ListFrom,0); 
        } 
       }); 

       etTo.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         Intent ToList = new Intent(SearchRide.this,ListTo.class); 
         startActivityForResult(ToList,1); 
        } 
       }); 

       etDate.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         DatePickerDialog dialog= new DatePickerDialog(SearchRide.this,R.style.MyDatePickerStyle,listener,calendar.get(Calendar.DAY_OF_MONTH),calendar.get(Calendar.MONTH),calendar.get(Calendar.YEAR)); 
         dialog.getDatePicker().setMinDate(calendar.getTimeInMillis()); 
         dialog.show(); 
        } 
       }); 
      } 

      @Override 
      protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
       if (requestCode == 0) { 
        if(resultCode == Activity.RESULT_OK){ 
         etFrom.setText(data.getStringExtra("From")); 
        } 
       } else if (requestCode == 1) { 
        if(resultCode == Activity.RESULT_OK){ 
         etTo.setText(data.getStringExtra("To")); 
        } 

       }} 

ListFrom Code:

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_list_from); 

listView=(ListView) findViewById(R.id.listviewFrom); 
editText=(EditText) findViewById(R.id.etsearchFrom); 

initList(); 
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     String v=""; 
     switch (position) { 
      case 0: 
       v = items[0]; 
       break; 
      case 1: 
       v = items[1]; 
       break; 
      case 2: 
       v = items[2]; 
       break; 
      case 3: 
       v = items[3]; 
       break; 
      case 4: 
       v = items[4]; 
       break; 
      case 5: 
       v = items[5]; 
       break; 
     } 
    Intent intent = new Intent(); 
     intent.putExtra("From",v); 
     setResult(Activity.RESULT_OK, intent); 
     finish(); 

    } 
}); 

ListTo Code:

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_list_to); 

etSearchTo=(EditText) findViewById(R.id.etSearchTo); 
listViewTo=(ListView) findViewById(R.id.listViewTo); 

initList(); 
listViewTo.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     String v=""; 
     switch (position) { 
      case 0: 
       v = items[0]; 
       break; 
      case 1: 
       v = items[1]; 
       break; 
      case 2: 
       v = items[2]; 
       break; 
      case 3: 
       v = items[3]; 
       break; 
      case 4: 
       v = items[4]; 
       break; 
      case 5: 
       v = items[5]; 
       break; 
     } 
     Intent intent = new Intent(); 
     intent.putExtra("To",v); 
     setResult(Activity.RESULT_OK, intent); 
     finish(); 
    } 
}); 
+0

"App hält immer an" –

+0

Kopieren und Einfügen der MainActivity von oben, sollte die App nicht aufhören – Ali

+0

Ich habe den Code bearbeitet, bitte versuchen Sie es jetzt und sagen, ob es nicht funktioniert. – Ali

0

Hier ist, was Sie tun können. Setzen Sie sowohl Werte von als auch Werte als Extra, wenn Sie eine Aktivität starten, und geben Sie beide als Ergebnis zurück. Auf diese Weise werden Sie sich daran erinnern können. Ich gehe davon aus, dass Sie keine statischen Variablen verwenden wollen.

// in ListTo activity 
intent.putExtra("To",v); 
intent.putExtra("From", getIntent().getStringExtra("From")); 

// in ListFrom activity 
intent.putExtra("From",v); 
intent.putExtra("To", getIntent().getStringExtra("To")); 

// in Main activity 
etTo.setText(getIntent().getStringExtra("To")); 
etFrom.setText(getIntent().getStringExtra("From")); 

// when starting ListFrom activity 
Intent ListFrom=new Intent(SearchRide.this,ListFrom.class); 
intent.putExtra("From", getIntent().getStringExtra("From")); 
intent.putExtra("To", getIntent().getStringExtra("To")); 
startActivity(ListFrom); 

// when starting ListTo activity 
Intent ToList =new Intent(SearchRide.this,ListTo.class); 
intent.putExtra("From", getIntent().getStringExtra("From")); 
intent.putExtra("To", getIntent().getStringExtra("To")); 
startActivity(ToList); 

PS: Ich habe den obigen Code nicht getestet. Sie können Nullzeigerfehler auftreten, aber es sollte Ihnen die allgemeine Idee geben.

Verwandte Themen