2012-07-16 96 views
-1

在我的應用程序中,當用戶點擊微調器中的項目時,它將轉到新的活動,因爲我有5個編輯文本,因爲我保留微調器的值,當用戶編輯此值並按保存按鈕,編輯的值應該替換spinner.How舊值可我做到這一點?請幫助我..活動後的微調器更新

我的微調代碼:

public class BudgetJulyo4Activity extends Activity 
{ 
     /** Called when the activity is first created. */ 
     DBadapter db =new DBadapter(this); 
     DBadapterRec dbrec=new DBadapterRec(this); 
     public void onCreate(Bundle savedInstanceState) 
     {  

      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      Button b1=(Button)findViewById(R.id.button1); 
      Button b2=(Button)findViewById(R.id.button2); 
      Button b3=(Button)findViewById(R.id.button3); 
      Button b4=(Button)findViewById(R.id.button4); 
      Spinner s1=(Spinner)findViewById(R.id.spinner); 
      Spinner s2=(Spinner)findViewById(R.id.spinner1); 

      ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
        this, R.array.recurr_array, android.R.layout.simple_spinner_item); 
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      s1.setAdapter(adapter);   

      String group[]=getResources().getStringArray(R.array.group_array);------>Before calling edit(i.e when enters first time i am showing some hardcore value) 

      ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(
        this, android.R.layout.simple_spinner_item,group); 
      adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      s2.setAdapter(adapter1);  
} 

protected void onActivityResult(int requestCode, int resultCode, Intent data) ------>After edit option. 
     {  
      java.lang.System.out.println("Inside act"); 
      // TODO Auto-generated method stub   
//  } 
      super.onActivityResult(requestCode, resultCode, data);   
      if(resultCode==1) 
      {   
       Spinner s2=(Spinner)findViewById(R.id.spinner1); 
       String str1=data.getStringExtra("grp1val");  
       String str2=data.getStringExtra("grp2val"); 
       String str3=data.getStringExtra("grp3val"); 
       String str4=data.getStringExtra("grp4val"); 
       String str5=data.getStringExtra("grp5val"); 
       String str6="Edit"; 

       String group[] = new String[] { str1,str2,str3,str4,str5,str6}; 
       ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(
         this, android.R.layout.simple_spinner_item,group);    
       adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
       s2.setAdapter(adapter1);     

      } 
     } 
} 
+1

[在Android中更新微調器]的可能的副本(http://stackoverflow.com/questions/11498873/update-a-spinner-in-android) – 2012-07-16 07:19:30

+0

@prakash:啓動SpinnerEdit作爲'startactivityforresult'而不是'startActivity'並使用'SpinnerEdit' Activity中的'setResult'將數據發送回Spinner Activity。然後在'startactivityforresult'中,您可以重置用戶在'SpinnerEdit'活動中選擇的Spinner值。 – 2012-07-16 07:21:30

+0

@ prakash.k你爲什麼發表相同的問題? – 2012-07-16 07:34:58

回答

2

嘗試作爲開始SpinnerEdit活性作爲startactivityforresult代替startActivity用於獲取用戶保存的值回到在微調活動,然後您可以在startactivityforresult與最新值UPADTE微調:

public void onItemSelected(AdapterView<?> s2, View arg1, 
    int pos, long id) { 
    // TODO Auto-generated method stub 
    group=s2.getItemAtPosition(pos).toString(); 
    if(group.equals("Edit")) 
     { 
     Intent i = new Intent(getApplicationContext(),SpinnerEdit.class); 
     startActivityForResult(i, 1); 
     } 
     //your code here... 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(requestCode, resultCode, data); 
     if(resultCode==1){ 
      String str1=ata.getStringExtra("grp1val"); 
      ... 
      //here you can update your Spinner Adapter with latest values 
     } 
     else{ 
      Toast.makeText(this, "Fail", Toast.LENGTH_LONG).show(); 
     } 

和SpinnerEdit:

saveButton.setOnClickListener(new OnClickListener() { 
    @Override 
    public void onClick(View v) { 
    Intent spin = new Intent(); 
    spin.putExtra("grp1val", group1.getText().toString()); 
    spin.putExtra("grp2val", group2.getText().toString()); 
    spin.putExtra("grp3val", group3.getText().toString()); 
    spin.putExtra("grp4val", group4.getText().toString()); 
    spin.putExtra("grp5val", group5.getText().toString()); 
    setResult(1,spin); 
    finish(); 
    } 
}); 
+0

是傳遞1而不是請求代碼 – 2012-07-16 07:41:13

+0

HI imran我想傳遞給spinneredit類中後退按鈕中的另一個活動。這是我的下面的代碼:Intent spin = new Intent(getApplicationContext(),BudgetJulyo4Activity.class); \t \t \t \t \t spin.putExtra(「grp1val」,group1.getText()。toString()); \t \t \t \t \t spin.putExtra(「grp2val」,group2.getText()。toString()); \t \t \t \t \t spin.putExtra(「grp3val」,group3.getText()。toString()); \t \t \t \t \t spin.putExtra(「grp4val」,group4.getText()。toString()); \t \t \t \t \t spin.putExtra(「grp5val」,group5.getText()。toString()); \t \t \t \t \t startActivityForResult(自旋,1);.但它不進入activityonresult代碼.. – 2012-07-16 07:59:05

+0

這裏是你的代碼? – 2012-07-16 08:01:09

1

如果微調的適配器延伸BaseAdapter然後你應該在數據修改後調用notifyDataSetChanged()

((BaseAdapter)s2.getAdapter()).notifyDataSetChanged(); 
+0

我試過這個,然後我得到這個異常07-16 12:59:13.167:E/AndroidRuntime(543):java.lang.UnsupportedOperationException – Venkatesh 2012-07-16 07:30:14

+0

你能看到異常的蹤跡,它發生在你的代碼中嗎? – fiddler 2012-07-16 07:33:30

+0

final ArrayAdapter NoCoreAdapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item,month); \t \t NoCoreAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); mon_spinner.setOnItemSelectedListener(新AdapterView.OnItemSelectedListener(){ \t \t \t公共無效onItemSelected(適配器視圖父,瀏覽視圖,INT POS,長ID){ \t \t \t INT索引= 0; \t \t \t NoCoreAdapter.add( 「EDIT」); \t \t \t((BaseAdapter)mon_spinner.getAdapter())notifyDataSetChanged(); 我將發送低於該 – Venkatesh 2012-07-16 07:42:12

1

使用s2.setselection(position)在setOnItemSelectedListener並保存在共享偏愛該值,並使用上述方法中的OnCreate該活動的

+0

謝謝Praveena_Pinki ..但我沒有達到該級別的android.Can你請給你一些上述答案的詳細信息.. – 2012-07-16 07:19:28