2013-02-18 21 views
-1

我在从Spinner获取信息并将其传递给其他活动时出现问题。如何通过意图从微调器发送字符串

该意图发送一个包含来自EditText的字符串以及来自Spinner的项目的包。

我认为这个问题是由于下面一行中的getText()造成的。但我不知道如何解决这个问题。

String messagecolor = editTextcolor.getText().toString(); 

任何人都可以提供洞察问题是什么?

package com.example.myfirstapp; 

    import android.app.Activity; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.view.Menu; 
    import android.view.View; 
    import android.widget.AdapterView; 
    import android.widget.AdapterView.OnItemSelectedListener; 
    import android.widget.ArrayAdapter; 
    import android.widget.EditText; 
    import android.widget.Spinner; 

    public class MainActivity extends Activity { 
     public final static String EXTRA_MESSAGE = "com.example.myfirstapp.MESSAGE"; 
     public final static String EXTRA_MESSAGE_COLOR = "com.example.myfirstapp.MESSAGE2"; 

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

      Spinner spinner = (Spinner) findViewById(R.id.spinner); 
      // Create an ArrayAdapter using the string array and a default spinner layout 
      ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, 
        R.array.color_array, android.R.layout.simple_spinner_item); 
      // Specify the layout to use when the list of choices appears 
      adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      // Apply the adapter to the spinner 
      spinner.setAdapter(adapter); 


     class SpinnerActivity extends Activity implements OnItemSelectedListener { 
      public void onItemSelected(AdapterView<?> parent, View view, 
        int pos, long id) { 
       // An item was selected. You can retrieve the selected item using 
       // parent.getItemAtPosition(pos) 
      } 

      public void onNothingSelected(AdapterView<?> parent) { 
       // Another interface callback 

      Spinner spinner = (Spinner) findViewById(R.id.spinner); 
      spinner.setOnItemSelectedListener(this); 
      } 
     } 
     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      // Inflate the menu; this adds items to the action bar if it is present. 
      getMenuInflater().inflate(R.menu.activity_main, menu); 
      return true; 
     } 

    /** Called when the user clicks the Send button */ 
    public void sendMessage (View view) { 
     Intent i = new Intent(this, DisplayMessageActivity.class); 
     EditText editText = (EditText) findViewById(R.id.edit_message); 
     Spinner editTextcolor = (Spinner) findViewById(R.id.spinner); 
     String message = editText.getText().toString(); 
     String messagecolor = editTextcolor.getText().toString(); 
     Bundle extras = new Bundle(); 
     extras.putString(EXTRA_MESSAGE, message); 
     extras.putString(EXTRA_MESSAGE_COLOR, messagecolor); 
     i.putExtras(extras); 
     startActivity(i); 

    }} 
+1

它不符合你的期望?你知道'EditText'的值是否成功地将它放入包中?你如何在接收活动中提取它? – Blumer 2013-02-18 17:37:53

+0

如果我像这样运行,它会在第二个活动尝试启动时崩溃。如果我将getText更改为getContext,它将携带活动名称并显示在第二个活动(com.example.app.activity)上。是的,EditText的值按照它应该的那样工作。我正在使用下面的代码解压缩它。不过,我认为这部分工作正常。 – user2059311 2013-02-18 17:43:24

+0

'Bundle bundle = getIntent()。getExtras(); \t \t String messagecolor = bundle.getString(MainActivity.EXTRA_MESSAGE_COLOR); \t \t String message = bundle.getString(MainActivity.EXTRA_MESSAGE); ' – user2059311 2013-02-18 17:43:47

回答

1

您可能面临的问题是您没有得到所选项目的字符串。你可以尝试使用getSelectedItem()是:

String messagecolor = editTextcolor.getSelectedItem().toString(); 

这种方法可以返回null,所以你也应该有这样的检查。

+0

完美的作品谢谢你。 – user2059311 2013-02-18 17:45:10

+0

@ user2059311不客气:-) – 2013-02-18 17:53:38

相关问题