2014-02-13 84 views
0

我是新来的android。我在我的微调框中显示5个字符串,我希望当用户选择一个字符串时,它会显示在编辑文本视图中。我已完成设置微调项目,但我不知道如何在编辑文本视图中显示它。我想将它保存到共享首选项中(我允许用户从微调框中选择一个文本或手动输入任何文本。我可以将自定义文本设置为共享首选项,但不知道如何保存所选内容文本)Android将选定的微调项目设置到编辑文本视图

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); 

     SharedPreferences sp = getSharedPreferences("EditValue" ,0); 
      String myvalue = sp.getString("myvalue",""); 
      if(myvalue!=null || !myvalue.equalsIgnoreCase("")) { 
       message.setText(myvalue); 
      } 


     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<?> arg0, View arg1, 
        int position, long id) { 
      String selectedItem = alert[position]; 
        message.setText(selectedItem); 


        SharedPreferences sp = getSharedPreferences("EditValue" ,0); 
        SharedPreferences.Editor spEdt = sp.edit(); 
        spEdt.putString("myvalue", message.getText().toString()); 
        spEdt.commit(); 




      } 

      @Override 
      public void onNothingSelected(AdapterView<?> arg0) { 
      } 
     }); 

     // 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

获得从'spinner'所选值和设置文本int'EditText' –

+0

使用'setOnItemSelectedListener'作为spinn呃,以得到他的项目名称,并设置在山雀'Edittext' – Yugesh

回答

1

你可以这样说:

spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
    @Override 
    public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long id) { 
    selectedItem = alert[position]; 
    edittext.setText(selectedItem); 


    SharedPreference sp = getSharedPreference("EditValue" ,0); 
    SharedPreference.Editor spEdt = sp.edit(); 
    spEdt.putString("myvalue", edittext.getText().toString()); 
    spEdt.commit(); 


    } 

    @Override 
    public void onNothingSelected(AdapterView<?> arg0) { 
    } 
    }); 

现在,只要你想从SharedPreference获得价值,你就会得到...

SharedPreference sp = getSharedPreference("EditValue" ,0); 
    String myvalue = sp.getString("myvalue",""); 
    Log.v("GetValue",myvalue); 

UPDATE:

检查它onCreate()方法..

SharedPreference sp = getSharedPreference("EditValue" ,0); 
    String myvalue = sp.getString("myvalue",""); 
    if(myvalue!=null || !myvalue.equalsIgnoreCase("")) { 
     edittext.setText(myvalue); 
    } 

NEWUPDATE:

 @Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    message = (EditText) findViewById(R.id.et_message); 
    spinner = (Spinner) findViewById(R.id.Spin_alert_message); 

    SharedPreferences sp = getSharedPreferences("EditValue" ,0); 
    String myvalue = sp.getString("myvalue",""); 
     if(myvalue!=null || !myvalue.equalsIgnoreCase("")) { 
      message.setText(myvalue); 
     } 



    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<?> arg0, View arg1, 
       int position, long id) { 
     String selectedItem = alert[position]; 
       message.setText(selectedItem); 


       SharedPreferences sp = getSharedPreferences("EditValue" ,0); 
       SharedPreferences.Editor spEdt = sp.edit(); 
       spEdt.putString("myvalue", message.getText().toString()); 
       spEdt.commit(); 




     } 

     @Override 
     public void onNothingSelected(AdapterView<?> arg0) { 
     } 
    }); 


    // loads the text that has been stored to SP and set it to Edit Text 

    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 


     } 
    }); 
+0

我已经更新我的代码,我想如果用户想要输入他自己的味精,他可以在编辑文本视图中做到这一点,我保存在共享偏好,这是工作得很好,但不是现在,我也给我自己的5条消息,如果他想从中选择任何一条,它将显示以编辑文本并以共享偏好保存。但现在,他们都没有工作:( –

+0

但是5条消息将被存储在您的数组中,并且您只是根据其阵列位置保存 – Piyush

+0

假设我从微调器中选择“小心”,并且如果我关闭应用程序或重新启动在手机上,我想要“注意”文本在编辑文本上。 –

3

您可以使用微调setOnItemClickListener像下面

spinner.setOnItemClickListener(new OnItemClickListener() { 

      @Override 
      public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
        long arg3) { 
       // TODO Auto-generated method stub 
       String selected = arg0.getItemAtPosition(arg2).toString(); 
        edittext.setText(selected); 
      } 
     }); 
+0

会是一个setOnItemClickListner或setOnItemSelectListner –

+0

@bhanukaushik其OnItemSelectedListener()。 – Piyush

+0

@bhanukaushik你可以使用两者。我在我的项目中使用了setOnItemClickListener。 –

0

设定和实施OnItemSelectedListener()的微调和onItemSelected方法内获得所选择的项目,并设置EditText.setText()

1

onItemSelected方法,获得选择@Mayuri提到的方式,项目的位置,或

String selected = alert[position]; 
editText.setText(selected); 
+0

我已更新我已实施的代码及其工作,但在Edittext上显示的所选字符串未保存到共享首选项。 –

+0

将它保存到同一个onItemSelected侦听器中的sharedpreference中,写入如下:Editor edit = sp.edit(); edit.putString( “钥匙”,selectedString); edit.commit(); –

0

实现是这样的:OnItemSelectedListener()

spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 
@Override 
public void onItemSelected(AdapterView<?> arg0, View arg1, int position, long id) { 
    selectedItem = alert[position]; 
    edittext.setText(selectedItem); 
} 

@Override 
public void onNothingSelected(AdapterView<?> arg0) { 
} 
}); 
相关问题