Я новичок в программировании на Android, и я столкнулся с проблемой, которую я не могу преодолеть. Я создал приложение TabHost, используя примеры Android Studio. Когда пользователь нажимает кнопку, я хотел бы вызвать другое действие, которое вызывает страницу настроек (я создал базовую активность «MySettings» из gui).Начало работы и обмен данными на Android
Проблема 1. Когда действие закрывается, MainActivity повторно запускает команду CreateCoate, а выбранная вкладка возвращается на вкладку запуска. Есть ли способ просто продолжить Tab, который был выбран последним?
Вызов код:
public void buttonPressed(View view) {
Intent intent = new Intent(MainActivity.this,MySettings.class);
MainActivity.this.startActivity(intent);
}
Задача 2: Я не могу обмениваться данными между этими двумя видами деятельности:
MainActivity:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sharedpreferences.edit();
}
MySettings:
public class MySettings extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings_inr);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(this);
sharedpreferences.edit().putInt("myvar",200);
sharedpreferences.edit().apply();
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show();
}
});
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
};
Этот код запускается, но когда активность MySettings закрывается, «myvar» не обновляется в вызывающей активности MainActivity.
public void setImage(){
SharedPreferences sharedpreferences = PreferenceManager.getDefaultSharedPreferences(this);
int cvt=sharedpreferences.getInt("myvar",0);
}
Рад, что это помогло. Я бы использовал apply() вместо того, чтобы сделать его асинхронным. О вашем вопросе о том, если sharedpreferences - это способ, подумайте о следующем: если в следующий раз, когда вы откроете приложение, вам будут нужны эти изменения, сделанные в ваших настройках, это путь. В другом случае это что-то временное, поэтому это не лучший способ обхода.Если вы находитесь в деле sencond, вам следует снова использовать намерение. Найдите startActivityForResult, чтобы узнать, как его реализовать. Там есть множество примеров. –