2017-07-06 45 views
0

我在MainActivity中有兩個Edittext:etFrometTo。 單擊時etFrom轉到ListFrom活動和etToListTo活動。 ListFromListTo活動包含Listview,並在選擇一個項目後返回到主活動並在edittexts中顯示結果。我使用MainActivity.putExtra("To",v);etTo.setText(getIntent().getStringExtra("To"));從活動中獲取數據。如何在Edittext中顯示兩個數據而不丟失其中的一個?

單擊第一個edittext後,從Listview中選擇一個項目並返回到主活動,當我對第二個edittext執行相同操作時,第一個edittext變空。而當我做第一個時,第二個變空了。 FirstSecond

ListTo代碼

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代碼

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爲主要活動

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

請你的代碼添加到這個問題。 – Ali

+1

請發佈您的onCreate,onStart和onResume方法 – TpoM6oH

+0

已發佈。我沒有OnStart和OnResume方法 –

回答

0

使用startActivityForResult()來啓動ListFrom和ListTo Activities並從OnActivityResult()方法中接收這些活動的結果。

SearchRide爲主要活動代碼:

   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代碼:

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代碼:

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

「應用程序保持停止」 –

+0

從上面複製和粘貼MainActivity,應用程序不應該停止 – Ali

+0

我編輯了代碼,請現在嘗試並告訴它是否不起作用。 – Ali

0

這裏是你可以做什麼。在開始一個活動時將其作爲額外值並將它們作爲結果返回。這樣你就可以記住它。我假設你只是不想使用靜態變量。

// 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:我還沒有測試過上面的代碼。你可以遇到空指針錯誤,但它應該給你一個總的想法。

相關問題