Передача текста между действиями с намерением

#java #android #android-intent

#java #Android #android-намерение

Вопрос:

У меня возникли некоторые трудности с передачей дополнительных функций намерения между действиями. Я новичок в Android, и даже эта мелочь действительно беспокоит меня.

Я пытаюсь передать информацию, введенную в EditText в MyActivity.java в TextView в DisplayMessageActivity.java когда я нажимаю кнопку.

Вот MyActivity.java код:

 public class MyActivity extends Activity {
public final static String EXTRA_MESSAGE = "myfirstapp.example.com.myapplication.MESSAGE";

public void sendMessage(View view) {
    Intent message_send = new Intent(this, DisplayMessageActivity.class);
    EditText edit_message = (EditText) findViewById(R.id.edit_message);
    String message = edit_message.getText().toString();
    message_send.putExtra(EXTRA_MESSAGE, message);
    MyActivity.this.startActivity(message_send);
}
  

И вот код для DisplayMessageActivity.java:

  public class DisplayMessageActivity extends Activity {

@Overide
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Intent message_send = getIntent();
    String message = message_send.getStringExtra(MyActivity.EXTRA_MESSAGE);
    TextView textView = new TextView(this);
    textView.setTextSize(40);
    textView.setText(message);
    setContentView(R.layout.activity_display_message);
}
  

Если бы кто-нибудь мог сказать мне, что происходит, это было бы здорово. Спасибо!

Комментарии:

1. Вы ищете объяснение того, как это работает, или это работает не так, как ожидалось?

Ответ №1:

DisplayMessageActivity создает новое TextView и задает переданное сообщение, но новое TextView нигде не отображается.

скорее всего, вместо создания нового TextView , вы захотите setContentView сначала, а затем вызвать findViewById , чтобы найти свой TextView .

весь код передачи строк правильный.

 @Overide
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_display_message);
    Intent message_send = getIntent();
    String message = message_send.getStringExtra(MyActivity.EXTRA_MESSAGE);
    TextView textView = (TextView) findViewById(R.id.my_text_view);
    textView.setTextSize(40);
    textView.setText(message);
}
  

Комментарии:

1. пожалуйста, не забудьте проголосовать за / принять, если это решит вашу проблему.

Ответ №2:

В dispalyActivity вы можете использовать этот код

 Bundle b = getIntent().getExtra();
String message = b.getString("message name");
  

вместо

 Intent message_send = getIntent(); 
String message = message_send.getStringExtra(MyActivity.EXTRA_MESSAGE);