2015-11-08 2 views
1

Я пытаюсь установить текст, когда я нажимаю кнопку ввода на первом экране, чтобы он выглядел как второе изображение. Всякий раз, когда я пытаюсь установить текст, на втором экране ничего не отображается. Я частично извлек часть кода в первом действии, потому что они неактуальны.Android onActivityResult() с намерением

enter image description here enter image description here

Моя первая деятельность

public class ActivityLoaderActivity extends Activity { 

    static private final int GET_TEXT_REQUEST_CODE = 1; 

    private void startExplicitActivation() { 

     Log.i(TAG,"Entered startExplicitActivation()"); 

     Intent explicitIntent = null; 
     explicitIntent = new Intent(ActivityLoaderActivity.this, ExplicitlyLoadedActivity.class); 
     startActivityForResult(explicitIntent, GET_TEXT_REQUEST_CODE); 
    } 

    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     Log.i(TAG, "Entered onActivityResult()"); 
     if (requestCode == GET_TEXT_REQUEST_CODE) { 
      // Make sure the request was successful 
      if (resultCode == RESULT_OK) { 
       String value = (String) data.getExtras().getString("userInputMessage"); 
       mUserTextView.setText(value); 
      } 
     } 
    } 
} 

Моя вторая деятельность
общественного класса ExplicitlyLoadedActivity расширяет активность {

static private final String TAG = "Lab-Intents"; 

    private EditText mEditText; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     setContentView(R.layout.explicitly_loaded_activity); 

     // Get a reference to the EditText field 
     mEditText = (EditText) findViewById(R.id.editText); 

     // Declare and setup "Enter" button 
     Button enterButton = (Button) findViewById(R.id.enter_button); 
     enterButton.setOnClickListener(new OnClickListener() { 

      // Call enterClicked() when pressed 

      @Override 
      public void onClick(View v) { 

       enterClicked(); 

      } 
     }); 

    } 

    // Sets result to send back to calling Activity and finishes 

    private void enterClicked() { 

     Log.i(TAG,"Entered enterClicked()"); 

     //Save user provided input from the EditText field 
     mEditText.toString(); 

     Intent resultIntent = new Intent(); 
     resultIntent.putExtra("userInputMessage ", "mEditText"); 

     setResult(RESULT_OK, resultIntent); 

     finish(); 
    } 
} 

ответ

2

Один очевидный вопрос, что вы настраиваете содержимое строки к литературе "mEditText" вместо mEditText.getText().toString(), который будет иметь реальное содержимое EditText:

resultIntent.putExtra("userInputMessage ", "mEditText"); 

И потом:

String value = (String) data.getExtras().getString("userInputMessage"); 

Следующий вопрос заключается в том, что существует пробел после userInputMessage в первом вызове, так что не будет соответствовать, когда вы попытаетесь получить дополнительные данные позже.

Лучше было бы определить это как значение public static final String и использовать ссылку в обоих местах.

+1

Спасибо, что работает. Вы имеете в виду определение значения с помощью public static final string? Зачем? – TykiMikk

+0

Определение строки как постоянного значения вместо дублирования строкового литерала в вашем коде предотвратило бы ошибку в вашем приложении. Есть много веских причин, чтобы избежать дублирования строковых литералов в коде, я предлагаю Googling, что вы не знакомы с этой идеей. – Jameson

Смежные вопросы