您好我尝试使用Global Variable
传递值。我创建了一个类文件,将其扩展为Application
,然后将其添加到Manifest
。
public class MyApplication extends Application {}
之后我创建了一个Adapter Class
,其扩展为BaseExpandableListAdapter
,我已经搜索了如何设置和获取我创建的全局变量并找到了这个
((MyApplication) getActivity().getApplication()).setMy_id(my_id);
并且能够获得我使用的值
Integer my_id = ((MyApplication) getActivity().getApplication()).getMy_id();
在我的Fragments
中,我可以使用getMy_id()
方法,但在将其放入BaseExpandableListAdapter
时,我在getActivity()中出错了。我已经尝试过使用this
,但仍然说Cannot resolve method getApplication()
,是否有其他方法可以获取全局变量的值。
我这样做是因为我试图将Cursor
用于我的ListView
。我想创建一个Expandable ListView
,其数据来自我的数据库,我的Cursor
有一个参数,用于WHERE
条件,我的全局变量中的数据将被使用。
我之所以将其用作全局变量,是因为我在不同的Fragments
中使用此数据而不是静态的,它会更改其值取决于所选项目。
提前谢谢你。
答案 0 :(得分:1)
我不确定你想要实现的目标,但无论你做什么,对我来说都是好看的!根据你的问题回答,getApplication()
需要一个上下文,所以当你做
((MyApplication) getActivity().getApplication())
您实际上是在使用activitiy(getActivity())上下文。而且您无法在getActivity()
课程中致电Adapter
。尝试将活动的上下文从活动传递到构造函数中的适配器,例如。
MyAdapter myAdapter = new MyAdapter(this); //This line will be in your activity, and this will be the instance of your activity
你的适配器构造函数看起来像
public MyAdapter(Context context){
//Use this context to get the application instance, something like
Integer my_id = ((MyApplication) context.getApplication()).getMy_id();
}
答案 1 :(得分:1)
您的类中需要一个扩展BaseExpandableListAdapter的构造函数。定义的构造函数应该接收Context类型的参数。这是一个例子 -
private Context mContext;
public YourExpandableListAdapter(Context context) {
mContext = context;
Integer my_id = ((MyApplication) context.getApplicationContext()()).getMy_id();
}
现在在您的活动中创建一个这样的实例 -
YourExpandableListAdapter ob = new YourExpandableListAdapter(this);
这应该有用。
答案 2 :(得分:0)
对我来说,以上所有方法均无效。试试这个:
((MyApplication) context.getApplicationContext()).getMy_id();