访问未启动活动中的文本视图



我有一个设置按钮,可以启动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 ContextgetApplicationContext() ) 作为参数传递给SettingsMenu类,并且需要相应地膨胀所需的布局,您可以在其中访问所有文本视图?

只有这样,我们才能加载所有TextViewsetText或重置您要对其执行的任何操作。

您不应尝试访问尚未启动的活动中的某些内容。此外,您永远不应该通过像这样调用其构造函数来创建活动:

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是默认值。

最新更新