我有一个设置按钮,用于启动SettingsMenu.class。在那里,有一个按钮可以重置你的统计数据,重置后我需要刷新TextViews。但它们处于尚未启动的活动InventoryMenu.class中。
我不确定如何解决这个问题,我将尝试查看是否可以在按下重置按钮后启动InventoryMenu.class,因此我没有得到NullPointerException。但启动InventoryMenu.class的问题是它打开了库存
刷新SettingsMenu.class中的TextView -
InventoryMenu inv = new InventoryMenu();
TextView t1 = inv.t1;
t1.setText("");
在InventoryMenu.class中获取尚未启动的TextView -
public TextView t1 = (TextView) findViewById(R.id.inventorySlot1);
答案 0 :(得分:0)
您是否将Android Context
(getApplicationContext()
)传递给SettingsMenu
类作为参数,是否需要对所有文本视图可访问的相应布局进行充气?
只有这样,我们才能加载所有TextView
和setText
,或重置您要对其执行的任何操作。
答案 1 :(得分:0)
您不应尝试访问尚未启动的活动中的某些内容。此外,你永远不应该通过调用它的构造函数来创建一个活动:
new InventoryMenu()
你应该做的是反过来。您应该访问InventoryMenu
活动onCreate
。
但首先,您应该将用户在某个地方设置的新设置放在一起,以便InventoryMenu
以后可以访问它。我建议SharedPreferences
。
将statsReset设置放入共享首选项:
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
是默认值。