Android 在非';t开始

Android 在非';t开始,android,Android,我有一个设置按钮,可以启动SettingsMenu.class。在那里,有一个按钮,将重置您的统计数据和重置后,我需要的文本视图刷新。但它们位于一个尚未启动的活动InventoryMenu.class中 我不确定如何解决这个问题,我将尝试看看是否可以在按下重置按钮后启动InventoryMenu.class,以避免出现NullPointerException。但是启动InventoryMenu.class的问题在于它会打开库存 正在SettingsMenu.class中刷新文本视图- Inven

我有一个设置按钮,可以启动SettingsMenu.class。在那里,有一个按钮,将重置您的统计数据和重置后,我需要的文本视图刷新。但它们位于一个尚未启动的活动InventoryMenu.class中

我不确定如何解决这个问题,我将尝试看看是否可以在按下重置按钮后启动InventoryMenu.class,以避免出现NullPointerException。但是启动InventoryMenu.class的问题在于它会打开库存

正在SettingsMenu.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()
你应该做的是反过来。您应该访问
inventory菜单中的设置
活动的
onCreate

但首先,您应该将用户设置的新设置集放在某个地方,以便
InventoryMenu
以后可以访问它。我推荐
SharedReferences

要将statsReset设置放入共享首选项中,请执行以下操作:

PreferenceManager.getDefaultSharedPreferences(this)
    .edit().putBoolean("statsReset", someBoolean).apply();
其中
someBoolean
应替换为用户选择的实际值

现在在
inventory菜单中
,检查
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
是默认值。

以这种方式在问题中发布完整的源代码,我们无法理解更多信息?这是按下按钮后SettingsMenu.class中的代码-InventoryMenu inv=new InventoryMenu();TextView t1=inv.t1;在此行抛出NullPointerException,它位于尚未启动的活动中-public TextView t1=(TextView)findViewById(R.id.inventorySlot1);为您的textview使用static关键字,您可以在其他活动中访问该textview(但我个人不建议您使用static)。如果活动未启动,您为什么要尝试访问textview?您不需要“重置”它们,因为它们从未更改过。活动应交叉引用其观点。听起来您需要某种类型的存储来存储库存,比如SQLite表来插入/更新/重置数据。