2014-02-12 26 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

是的,我错误地设置文本。谢谢你的帮助 –

相关问题