2014-02-12 27 views
0

我已經在我的應用程序中放置了一個微調器,我想顯示5個句子/字符串,當我選擇其中一個時,它會顯示到編輯文本查看並同時保存到共享首選項,我甚至允許用戶輸入他想要的任何文本,如果他不想選擇任何提供的字符串。這些字符串是固定的,不會被改變。我能夠保存用戶提供的文本消息,但是我在將字符串顯示到編輯文本視圖並將其保存到共享偏好設置中時遇到了問題。請幫我出Android從微調控制器顯示文本到編輯文本視圖並保存在共享首選項

EditText message; 
Spinner spinner; 
String[] alert = { "I am in danger", "Help Me", "Watch Out", "Look For Me", 
      "Cover ME" }; 
@Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     spinner = (Spinner) findViewById(R.id.Spin_alert_message); 

     spinner = (Spinner)findViewById(R.id.Spin_alert_message); 
    ArrayAdapter<String> adp = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_item, alert); 
    spinner.setAdapter(adp); 



     // for saving text that user can change as per need 
     final SharedPreferences preferences = PreferenceManager 
       .getDefaultSharedPreferences(this); 

     message = (EditText) findViewById(R.id.et_message); 
     // loads the text that has been stored to SP and set it to Edit Text 
     message.setText(preferences.getString("autoSave", "")); 
     // adding addTextChangedListner() to the Edit Text View 
     message.addTextChangedListener(new TextWatcher() { 

      @Override 
      public void onTextChanged(CharSequence s, int start, int before, 
        int count) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void beforeTextChanged(CharSequence s, int start, int count, 
        int after) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void afterTextChanged(Editable s) { 
       // TODO Auto-generated method stub 
       // saving text after it is changed by the user 
       preferences.edit().putString("autoSave", s.toString()).commit(); 

      } 
     }); 
+0

** pos **是int,它是您的微調項目的位置。你無法使用它將Spinner值設置爲TextView。 – Piyush

+0

@PiyushGupta那我還能做什麼?請指導我 –

回答

1

嗯,首先message.setText(pos);都會將寫在EditText上選擇的位置不是從微調選定的文本。爲了解決這個問題使用:

spinner = (Spinner)findViewById(R.id.Spin_alert_message); 
ArrayAdapter<String> adp = new ArrayAdapter<String>(getApplicationContext(), 
    android.R.layout.simple_spinner_item, alert); 
spinner.setAdapter(adp); 

spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

    @Override 
    public void onItemSelected(AdapterView<?> parent, 
     View view, int position, long id) { 

     String text = (String) parent.getAdapter().getItem(position); 
     message.setText(pos); 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 
     // We do... nothing! :) 
    } 
}); 

其次,我不知道如果與TextWatcher您的解決方案是爲節省SharedPreferences文本最好的之一。但是,如果它的工作保持那樣。

你的問題是一種ambigous,所以我不知道這個答案是否解決了所有的問題。如果您需要更多幫助,請嘗試更詳細地描述問題。

+0

我完成了顯示微調項目,我知道如何將選定的字符串顯示在編輯文本視圖上。我是否必須使用setOnItemSelectListner實現一些代碼? –

+0

@bhanu kaushik - 我更新了我的代碼以準確顯示它將如何集成到您的代碼中。如果我沒有記錯,你確實有一個OnItemSelectedListener,但是你錯誤地設置了EditText中的文本。我希望這可以澄清你的問題:) – Bandreid

+0

是的,我錯誤地設置文本。謝謝你的幫助 –

相關問題