gpt4 book ai didi

java - 无法将 TextView 的值设置为 Activity 或 fragment 类中非静态方法的结果

转载 作者:行者123 更新时间:2023-12-01 12:28:10 24 4
gpt4 key购买 nike

我有一个 Activity - Portfolio Activity - 我试图将 TextView 的值设置为方法 - getPriceofCoins 的结果 - 当调用该方法时,会从 sqlite 数据库检索并返回一个值。创建 Activity 时, TextView 将发生更改以反射(reflect)数据库中记录的值。

我目前正在使用这些方法:这部分工作正常

      //In the activity class:

public double getPriceOfCoins(String coinType) {
UserData userData = new UserData(getApplicationContext());
SQLiteDatabase database = userData.getReadableDatabase();

String rows_to_return[] = {"price_of_coin"};

Cursor cursor = database.query("portfolio", rows_to_return, "type_of_coin = '" + coinType + "'", null, null, null, null);

Log.d("woops", cursor.getColumnCount() + "");

Log.d("woops", cursor.moveToFirst() + "");


return cursor.getDouble(0);



}

在内部 fragment 类中:

  @Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_port_folio, container, false);
TextView priceView = (TextView) rootView.findViewById(R.id.portfolio_value_of_bitcoin_label);

priceView.setText(getPriceOfCoins("Bitcoin") + "");




return rootView;
}

这无法编译,因为我无法从静态 fragment 内部类引用非静态 getPriceOfCoins 方法;另一方面,我无法将其放入 Activity 的 OnCreate 方法中,因为 findViewById 在运行时会产生空指针异常。

对此处有关堆栈溢出的其他主题的研究表明,后一个错误的发生是因为布局尚未膨胀 - 这 发生在内部 fragment 类的 onCreateView 方法中。

我能想到的唯一解决方法是在类的顶部声明 PriceView 变量,在 onCreateView 方法中定义它,然后在代码中的其他位置设置其文本值。这不是一个解决方案,因为我不知道在哪里设置文本值,以便每次调用 onCreate 时都会发生或实时发生。

我想知道这个问题是否有解决方法

PS:数据库通过对网站的 http 请求在另一个 Activity 中获取其值。

最佳答案

您可以使方法静态,添加上下文作为参数:

public static  double getPriceOfCoins(Context contex, String coinType) {
UserData userData = new UserData(context);
}

并像 NameOfActivity.getPriceOfCoins 一样调用它,或者如果托管 Fragment 的 Activity 与具有该方法的 Activity 相同,您可以将 getActivity() 的返回值转换为您的 Activity,然后调用转换值的方法

关于java - 无法将 TextView 的值设置为 Activity 或 fragment 类中非静态方法的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26166948/

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