Как вызвать второй экран в приложении и вернуть из него данные? Для получения данных из вызываемого активити используется пара методов: startActivityForResult и onActivityResult. В этом уроке создаем простое android приложение, в котором мы вызываем второй экран методом startActivityForResult, и получаем введенные на нем данные обратно в метод onActivityResult.
Исходный код под видео:
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
package info.fandroid.simpleactivityresult; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity implements View.OnClickListener { TextView tvName; Button btnName; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvName = (TextView) findViewById(R.id.tv_name); btnName = (Button) findViewById(R.id.button_name); btnName.setOnClickListener(this); } @Override public void onClick(View v) { Intent intent = new Intent(this, NameActivity.class); startActivityForResult(intent, 1); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (data == null){ return; } String name = data.getStringExtra("name"); tvName.setText("Your name is " + name); } } |
NameActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
package info.fandroid.simpleactivityresult; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; public class NameActivity extends AppCompatActivity implements View.OnClickListener{ EditText editText; Button button; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_name); editText = (EditText) findViewById(R.id.editText); button = (Button) findViewById(R.id.button_ok); button.setOnClickListener(this); } @Override public void onClick(View v) { Intent intent = new Intent(); intent.putExtra("name", editText.getText().toString()); setResult(RESULT_OK, intent); finish(); } } |
<<Урок 28. Передаем данные между Activity используя Intent Extras | Уроки Android Studio
Урок 30. Используем requestCode и resultCode в onActivityResult | Уроки Android Studio>>
Привет. Спасибо за уроки.Мне нужен помощь. У меня проблема с setResult(RESULT_OK,intent) .Когда я нажимаю на кнопку ОК апп закрывается. Когда удаляю setResult(RESULT_OK,intent) после нажатия кнопку ОК откр. 1 активити но без изменений.Даже попробывал setResult(activity.RESULT_OK,intent) .
Какие ошибки в консоли?