gpt4 book ai didi

java - 如何使 Activity 在每次进入 Activity 时不重新加载/刷新?

转载 作者:行者123 更新时间:2023-12-02 09:36:00 25 4
gpt4 key购买 nike

我有一个 Activity ,我不希望每次进入它时都重新加载。我希望它显示我上次进入它时的信息。但我还想在另一个 Activity 中有一个按钮来刷新另一个 Activity ,这样当我进入它时,信息就会改变。我说内容发生了变化,因为每次进入该 Activity 时都会显示不同的回收者 View 。

这是我的 MainActivity.java:

public class Comida extends AppCompatActivity implements Adaptador2.OnRecipeListener {
private RecyclerView recyclerView1;
List<Entidad2> listItems;
Adaptador2 adaptor;
private Entidad2 entidad1,entidad2,entidad3;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_comida);

recyclerView1 = findViewById(R.id.lv_1);
LinearLayoutManager layoutManager = new LinearLayoutManager(this);
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);

recyclerView1.setLayoutManager(layoutManager);

listItems = new ArrayList<>();
entidad1 = new Entidad2(R.drawable.calabacines_3, "Solomillo a la plancha", " 10 min.", 4, 20);
entidad2 = new Entidad2(R.drawable.patatas_deluxe_especiadas_70523_300_150, "Entrecot", " 15 min.", 2, 50);
entidad3 = new Entidad2(R.drawable.tomate, "Hamburguesa", " 2 min.", 5, 100);


listItems.add(entidad1);
listItems.add(entidad2);
listItems.add(entidad3);

adaptor = new Adaptador2(listItems, this);
recyclerView1.setAdapter(adaptor);
adaptor.notifyDataSetChanged();
pickEntidad();
}
@Override
public void OnRecipe(int priority) {

if (priority == 20) {
Intent in = new Intent(this, Solomillo.class);
startActivity(in);
}
if (priority == 50) {
Intent in = new Intent(this, Entrecot.class);
startActivity(in);
}
if (priority == 100) {
Intent in = new Intent(this, Hamburguesa.class);
startActivity(in);
}
}

private void pickEntidad(){
final int random = new Random().nextInt(101);

int priority1 = entidad1.getPriority();
int priority2 = entidad2.getPriority();
int priority3 = entidad3.getPriority();


listItems.clear();
if(random < priority1){

listItems.add(entidad1);

}else if(random < priority2){

listItems.add(entidad2);

}else if (random <= priority3){

listItems.add(entidad3);

}
adaptor.notifyDataSetChanged();
}
}

这是我的activityWithButton.java:

public class Menu extends AppCompatActivity {
Button boton_start;
Button boton_refresh;
Button boton_prueba;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

boton_start=(Button) findViewById(R.id.boton_platos);
boton_refresh = (Button) findViewById(R.id.boton_cambiarmenu);
boton_prueba=(Button) findViewById(R.id.boton_menu);

boton_start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent(Menu.this,Dishes.class);
startActivity(in);
}
});
boton_prueba.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent in = new Intent(Menu.this,Comida.class);
startActivity(in);
}
});
boton_prueba.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//What to do?

}
});

}
}

请帮助我,我不知道该怎么办。

谢谢

最佳答案

您有两个相当简单的选项:SharedPreferencesSavedInstanceState

SharedPreferences,您可以在应用内任何可用上下文的地方访问和保存数据,为以后的任何数据分配键、值对被收回。通常,您需要在某些生命周期事件(例如 onStop)期间保存数据,并在 Activity 返回后在其他地方检索数据:

SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = prefs.edit();

@Override
public void onStop() {
super.onStop();
editor.putString("key", "My string");
editor.commit();
}

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String myValue = editor.getString("key");
}

SavedInstanceState 随 Activity 中的 onCreate 重写方法一起提供。利用可用的重写方法 onSaveInstanceState,在 Activity 临时销毁以便在重新创建时检索时传入所需的数据。

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

if (savedInstanceState != null) {
String myValue = savedInstanceState.getString("key");
}
}

@Override
public void onSaveInstanceState(Bundle outState) {
outState.putString("key", "My string");
super.onSaveInstanceState(outState);
}

进一步阅读https://developer.android.com/guide/components/activities/activity-lifecycle

关于java - 如何使 Activity 在每次进入 Activity 时不重新加载/刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57521189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com