Передача данных из второго занятия в третье занятие - PullRequest
0 голосов
/ 30 января 2019

В этой программе у меня есть три вида деятельности: основное, второе и третье.Когда приложение открывается, появляется пустой текстовый вид и кнопка.Нажав эту кнопку, вы перейдете ко второму занятию, где пользователь может ввести имя, номер телефона и адрес электронной почты.Как только эти формы будут заполнены, пользователь нажмет кнопку, чтобы сохранить эту информацию и вернуть ее к основному виду деятельности.Когда пользователь вернется к основному виду деятельности, пользователь увидит, что введенное имя отображается в пустом текстовом представлении.Затем они могут выбрать текстовое представление, которое приведет их к третьему занятию, отображая имя, номер телефона и адрес электронной почты, которые они ввели во втором занятии.

У меня все работает, ожидаю передачи данных из второго действия в третье.Я провел некоторые исследования и вижу, что многое можно сделать с помощью пакетов и общих префов.Я не слишком знаком с ними, так как это очень ново для меня.Я пытался их реализовать, но мне не повезло.В любом случае код приведен ниже, и любая помощь, отзывы или рекомендации будут высоко оценены.Заранее спасибо!


Основная активность:

public class MainActivity extends AppCompatActivity {

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

}
  public void onClick(View view){ 
     startActivityForResult(new Intent(getApplicationContext(),SecondActivity.class),999);
}

public void onClickText(View v)
{ 
    startActivityForResult(new Intent(getApplicationContext(),ThirdActivity.class),999);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == 999 && resultCode == RESULT_OK)
    { TextView contactView = (TextView) findViewById(R.id.contactDisplay);
      contactView.setText(data.getStringExtra("Name"));

    }


}}

Вторая активность:

public class SecondActivity extends AppCompatActivity {
public String textName;
public String emailAddress;
public int phoneNumber;
private TextView textNameView2;
EditText textPersonName;
EditText number;
EditText textEmailAddress;


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

}


public void onClickTwo(View view)
{
    textPersonName = (EditText) findViewById(R.id.name);
    number = (EditText) findViewById(R.id.number);
    textEmailAddress = (EditText) findViewById(R.id.email);

    textName = textPersonName.getText().toString();
    emailAddress = textEmailAddress.getText().toString();
    phoneNumber = Integer.valueOf(number.getText().toString());
    showToast(textName +"added");


    Intent backMain = new Intent(this, MainActivity.class);
   // Intent backMain = new Intent();
    backMain.putExtra("Name",textName);
   // backMain.putExtra("Email", emailAddress);
   // backMain.putExtra("Phone", phoneNumber);
    setResult(RESULT_OK, backMain);

    Intent thirdMain = new Intent(this, ThirdActivity.class);
    thirdMain.putExtra("Name",textName);
    thirdMain.putExtra("Email",emailAddress);
    thirdMain.putExtra("Phone",phoneNumber);
    setResult(RESULT_OK,thirdMain);
    finish();
}

private  void showToast(String text)
{
    Toast.makeText(this,text, Toast.LENGTH_LONG).show();

}}

Третья активность:

public class ThirdActivity extends AppCompatActivity {

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

}


   protected void onActivityResult(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 999 && resultCode == RESULT_OK) {

            TextView contact = (TextView) findViewById(R.id.contactNameView);
            contact.setText(data.getStringExtra("Name"));

            TextView phone = (TextView) findViewById(R.id.phoneView);
           phone.setText(data.getStringExtra("Phone"));

            TextView email = (TextView) findViewById(R.id.emailView);
            email.setText(data.getStringExtra("Email"));
        }

}
}

1 Ответ

0 голосов
/ 30 января 2019

Следуйте этой теме при передаче данных между действиями с помощью намерения:

Как передать данные между действиями в приложении Android?

Однако, если вы хотите передатьданные с использованием общих настроек, используйте этот фрагмент кода:

public class SharedPreferenceManager {
    private static final String PREFS_NAME = Config.SHARED_PREF_NAME;

    /**
     * @param context
     * @param key
     * @param value
     * @return
     */
    public static boolean saveToPreference(Context context, String key, String value) {
        SharedPreferences settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = settings.edit();
        editor.putString(key, value);
        return editor.commit();
    }


    /**
     * @param context
     * @param key
     * @return
     */
    public static String loadFromPreference(Context context, String key) {
        SharedPreferences settings = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
        return settings.getString(key, "");
    }
}

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

//Save to shared Preference in Activity A
SharedPreferenceManager.saveToPreference(this, "email", emailAddress.getText().toString());

//Load from shared preference in activity b
String emailAddress = SharedPreferenceManager.loadFromPreference(this, "email");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...