Передача строки из первого действия в последнее действие, но выполнение другого действия перед началом последнего действия - PullRequest
0 голосов
/ 17 сентября 2018

Я очень новичок в Android, если вопрос повторяется, пожалуйста, избегайте и отправьте ссылку.Есть три действия A, B и C. Деятельность A получает имя пользователя, которое я хочу отобразить в действии C, но сначала я хочу запустить действие B, а затем выполнить действие C. Проблема с намерением состоит в том, что мне нужно запустить Cпервый.Если вы используете единый пакет, пакет или пакет, не могли бы вы предоставить код?

Деятельность A

public class MainActivity extends AppCompatActivity {

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

    final EditText nameText = findViewById(R.id.nameText);
    nameText.setOnEditorActionListener(new OnEditorActionListener() {
        @Override
        public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
            String name = nameText.getText().toString();
            return true;
        }
    });
}

Деятельность B

    public class qPage2 extends AppCompatActivity {

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_q_page2);
                android.os.SystemClock.sleep(500);
            }
        }

Деятельность C

public class lastPage extends AppCompatActivity {

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

Ответы [ 5 ]

0 голосов
/ 17 сентября 2018

Простой и понятный подход - использовать опцию хранения данных SharedPreferences. Он используется для сохранения небольшой коллекции данных, такой как пара ключ-значение.

Сохраните имя пользователя в SharedPreferences, как показано ниже в упражнении A:

SharedPreferences sharedPref = getSharedPreferences(
    getString("MyKeyPairFileName"), Context.MODE_PRIVATE);
sharedPref.edit().putString("userKey", "Your username").apply;

Считайте значение из любой операции (B или C или D или ... Z), как показано ниже:

SharedPreferences sharedPref = getSharedPreferences(
    getString("MyKeyPairFileName"), Context.MODE_PRIVATE);
String username = sharedPref.getString("userKey", null);
/*null is the default value, if value for the key is not available*/);

Будьте осторожны при использовании getSharedPreferences против getPreferences из Activity. Вы можете прочитать больше о SharedPreferences здесь

0 голосов
/ 17 сентября 2018

Вы можете сохранить эту строку в SharedPreferences и получить доступ к этой строке в любом месте вашего проекта. Если вы не знакомы с SharedPreferences, прочитайте документацию по этой ссылке SharedPrefernces

0 голосов
/ 17 сентября 2018

Это проще, чем вы думали.Например, если вы хотите отправить строку Tasif из A в C через B.

В операции A

Intent intent = new Intent(A.this, B.class);
intent.putExtra("username", "Tasif");
startActivity(intent);

В операции B

Intent intent = new Intent(B.this, C.class);
intent.putExtras(getIntent()); // Add this line, it will copy all data in intent which starts activity B (including `username`).
startActivity(intent);

Inдеятельность C

String username = getIntent().getStringExtra("username");
0 голосов
/ 17 сентября 2018

Объявите String внутри действия "A" как public static и сохраните в нем строку из действия "A".

Например: Деятельность A.java

 public static String first = "hello";

Тогда в Деятельности "C" назовите это как

Активность C.java

String last = A.first; 
0 голосов
/ 17 сентября 2018

Для этого есть много вариантов:

  1. Вы можете использовать намерение, как вы упомянули
  2. Вы можете создать статический класс и объявить статическую переменную с типом string и получить к нему доступ вдействие C.

Код Для первого варианта: Для добавления значения к намерению

 Intent n = new Intent(FirstActivity.class,SecondActivity.class);
n.putExtra("name" , name);
n.startActivity();

Для его извлечения:

Intent intent = getIntent();
String name = intent.getStringExtra("name");

2.Создать статическийчлен класса и доступ к нему

class static StaticClass{
     static name = " ";
 }

Обновите эту переменную в первом действии и восстановите ее в последнем занятии

...