Java Can';t从OnClickListener类访问应用程序变量
我的Android应用程序中有一个OnCLick listener类,定义如下。我需要访问应用程序级变量,但此代码的最后一行生成以下编译错误: “OnClickListenerSelectPresetItem类型的方法getApplication()未定义” 如何从这个类访问应用程序变量Java Can';t从OnClickListener类访问应用程序变量,java,android,variables,Java,Android,Variables,我的Android应用程序中有一个OnCLick listener类,定义如下。我需要访问应用程序级变量,但此代码的最后一行生成以下编译错误: “OnClickListenerSelectPresetItem类型的方法getApplication()未定义” 如何从这个类访问应用程序变量 public class OnClickListenerSelectPresetItem implements OnClickListener { private long glbMealId = ((
public class OnClickListenerSelectPresetItem implements OnClickListener {
private long glbMealId = ((MyApplication) this.getApplication()).getMealId();
这个错误非常明显<代码>这是侦听器对象,而不是执行侦听器的上下文 您应该使用ActivityExecutingListener.this.getApplication() 编辑:如果您的侦听器不是匿名/内部类,则需要在侦听器实例中存储上下文:
public class OnClickListenerSelectPresetItem implements OnClickListener {
private long glbMealId;
private Activity activity;
public OnClickListenerSelectPresetItem(Activity activity) {
this.activity = activity; // facultative, but you may need it in onClick() ...
this.glbMealId = ((MyApplication) activity.getApplication()).getMealId();
}
...
}
这个错误非常明显<代码>这是侦听器对象,而不是执行侦听器的上下文 您应该使用ActivityExecutingListener.this.getApplication() 编辑:如果您的侦听器不是匿名/内部类,则需要在侦听器实例中存储上下文:
public class OnClickListenerSelectPresetItem implements OnClickListener {
private long glbMealId;
private Activity activity;
public OnClickListenerSelectPresetItem(Activity activity) {
this.activity = activity; // facultative, but you may need it in onClick() ...
this.glbMealId = ((MyApplication) activity.getApplication()).getMealId();
}
...
}
这个错误非常明显<代码>这是侦听器对象,而不是执行侦听器的上下文 您应该使用ActivityExecutingListener.this.getApplication() 编辑:如果您的侦听器不是匿名/内部类,则需要在侦听器实例中存储上下文:
public class OnClickListenerSelectPresetItem implements OnClickListener {
private long glbMealId;
private Activity activity;
public OnClickListenerSelectPresetItem(Activity activity) {
this.activity = activity; // facultative, but you may need it in onClick() ...
this.glbMealId = ((MyApplication) activity.getApplication()).getMealId();
}
...
}
这个错误非常明显<代码>这是侦听器对象,而不是执行侦听器的上下文 您应该使用ActivityExecutingListener.this.getApplication() 编辑:如果您的侦听器不是匿名/内部类,则需要在侦听器实例中存储上下文:
public class OnClickListenerSelectPresetItem implements OnClickListener {
private long glbMealId;
private Activity activity;
public OnClickListenerSelectPresetItem(Activity activity) {
this.activity = activity; // facultative, but you may need it in onClick() ...
this.glbMealId = ((MyApplication) activity.getApplication()).getMealId();
}
...
}
本例中的this运算符引用了单击ListenerSelectPresetItem时的
OnClickListenerSelectPresetItem
下面是一个您尝试执行的示例,从我的一个项目中剪切粘贴:
public class PageFragment extends Fragment {
private boolean isVisible( View view )
{
return true; // fake
}
private class OnLikeClickListener implements OnClickListener
{
private boolean isVisible = PageFragment.this.isVisible(); // <------
@Override
public void onClick(View v)
{
// Do whatever
}
}
}
public类PageFragment扩展了片段{
私有布尔值可见(视图)
{
返回true;//假
}
私有类OnLikeClickListener实现OnClickListener
{
private boolean isVisible=PageFragment.this.isVisible();//本例中的this运算符引用了OnClickListenerSelectPresetItem
下面是一个您尝试执行的示例,从我的一个项目中剪切粘贴:
public class PageFragment extends Fragment {
private boolean isVisible( View view )
{
return true; // fake
}
private class OnLikeClickListener implements OnClickListener
{
private boolean isVisible = PageFragment.this.isVisible(); // <------
@Override
public void onClick(View v)
{
// Do whatever
}
}
}
public类PageFragment扩展了片段{
私有布尔值可见(视图)
{
返回true;//假
}
私有类OnLikeClickListener实现OnClickListener
{
private boolean isVisible=PageFragment.this.isVisible();//本例中的this运算符引用了OnClickListenerSelectPresetItem
下面是一个您尝试执行的示例,从我的一个项目中剪切粘贴:
public class PageFragment extends Fragment {
private boolean isVisible( View view )
{
return true; // fake
}
private class OnLikeClickListener implements OnClickListener
{
private boolean isVisible = PageFragment.this.isVisible(); // <------
@Override
public void onClick(View v)
{
// Do whatever
}
}
}
public类PageFragment扩展了片段{
私有布尔值可见(视图)
{
返回true;//假
}
私有类OnLikeClickListener实现OnClickListener
{
private boolean isVisible=PageFragment.this.isVisible();//本例中的this运算符引用了OnClickListenerSelectPresetItem
下面是一个您尝试执行的示例,从我的一个项目中剪切粘贴:
public class PageFragment extends Fragment {
private boolean isVisible( View view )
{
return true; // fake
}
private class OnLikeClickListener implements OnClickListener
{
private boolean isVisible = PageFragment.this.isVisible(); // <------
@Override
public void onClick(View v)
{
// Do whatever
}
}
}
public类PageFragment扩展了片段{
私有布尔值可见(视图)
{
返回true;//假
}
私有类OnLikeClickListener实现OnClickListener
{
private boolean isVisible=PageFragment.this.isVisible();//好的。终于明白你的问题是什么了
您想引用应用程序的实现。
因此,要么:
将活动
传递给@pdegand建议的OnClickListenerSelectPresetItem
的构造函数
为方便起见,将我的应用程序设置为单例(我这样做是因为我不喜欢传递活动):
好的,我终于明白你的问题是什么了
您想引用应用程序的实现。
因此,要么:
将活动
传递给@pdegand建议的OnClickListenerSelectPresetItem
的构造函数
为方便起见,将我的应用程序设置为单例(我这样做是因为我不喜欢传递活动):
好的,我终于明白你的问题是什么了
您想引用应用程序的实现。
因此,要么:
将活动
传递给@pdegand建议的OnClickListenerSelectPresetItem
的构造函数
为方便起见,将我的应用程序设置为单例(我这样做是因为我不喜欢传递活动):
好的,我终于明白你的问题是什么了
您想引用应用程序的实现。
因此,要么:
将活动
传递给@pdegand建议的OnClickListenerSelectPresetItem
的构造函数
为方便起见,将我的应用程序设置为单例(我这样做是因为我不喜欢传递活动):
您可以提供更多的代码吗?请尝试使用classname.this或put getContext()可以提供更多的代码吗?请尝试使用classname.this或put getContext()可以提供更多的代码吗?请尝试使用classname.this或put getContext()可以提供更多的代码吗?请尝试使用classname.this或put getContext()可以我刚刚尝试了您的确切代码,但最后一行给出了“类型上下文的方法getApplication()未定义”编辑:getApplication()只能从活动中使用,不能从上下文中使用。因此,如何从此类访问我的应用程序变量??(因为它不是活动类)只需使用new OnClickListenerSelectPresetItem(this)
将活动传递给侦听器,并将this
作为一个动作