我有一个设置按钮,可以启动SettingsMenu.class。在那里,有一个按钮可以重置您的统计信息,在它们重置后,我需要 TextView 进行刷新。但是他们正在开展一项活动,InventoryMenu.class,该活动尚未启动。
我不确定我将如何解决这个问题,我将尝试看看我是否可以在按下重置按钮后启动 InventoryMenu.class这样我就不会得到 NullPointerException。但是启动库存菜单.class的问题在于它会打开库存
刷新设置菜单中的文本视图.class -
InventoryMenu inv = new InventoryMenu();
TextView t1 = inv.t1;
t1.setText("");
在尚未启动的 InventoryMenu.class 中获取文本视图 -
public TextView t1 = (TextView) findViewById(R.id.inventorySlot1);
您是否将 Android Context
( getApplicationContext()
) 作为参数传递给SettingsMenu
类,并且需要相应地膨胀所需的布局,您可以在其中访问所有文本视图?
只有这样,我们才能加载所有TextView
并setText
或重置您要对其执行的任何操作。
您不应尝试访问尚未启动的活动中的某些内容。此外,您永远不应该通过像这样调用其构造函数来创建活动:
new InventoryMenu()
你应该做的是相反的。您应该访问InventoryMenu
活动的onCreate
中的设置。
但首先,您应该将用户设置的新设置集放在某个位置,以便InventoryMenu
以后可以访问它。我会推荐SharedPreferences
。
要将统计信息重置设置放入共享首选项:
PreferenceManager.getDefaultSharedPreferences(this)
.edit().putBoolean("statsReset", someBoolean).apply();
其中someBoolean
应替换为用户选择的实际值。
现在在 InventoryMenu
中,检查statsReset
是否为真并执行相应的操作:
boolean statsReset = PreferenceManager.getDefaultSharedPreferences(this)
.getBoolean("statsReset", false);
if (statsReset) {
// change the text of the text view or whatever
} else {
// do other stuff
}
其中false
是默认值。