【发布时间】:2016-11-29 03:04:56
【问题描述】:
我的 Activityclass 中有一个 static 和 inner 类。我需要使用Intent(context,nameOfTheNewActivity.class) 调用活动,因为当单击RecyclerView.ViewHolder 中的项目时,我试图调用Intent。我必须覆盖onClick 才能使用getLayoutPosition() 单击项目的位置(此 getLayoutPosition() 工作正常)。
现在当我尝试使用 Intent 时出现错误:
静态上下文不能引用非静态方法。
我从 Stackoverflow 阅读了另一个链接,例如 this。在这种静态上下文和内部类内部的情况下,如何调用 Intent,即,如何获取内部类内部的上下文,以及如何解决 **fundamental ** 错误以不调用非静态静态类中的类?
在这里提问之前我尝试了以下方法:
使用 v.context 从视图中获取上下文,但我继续解决问题 - 仍然从静态上下文调用非静态方法。
从我的内部类中删除静态一词,但没有解决,应用程序崩溃。
我的代码:
public class ActivityOne extends AppCompatActivity implements
GoogleApiClient.OnConnectionFailedListener {
public static class MessageViewHolderOfFriend extends RecyclerView.ViewHolder { public MessageViewHolderOfFriend(View v) {
super(v);
v.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
;
Intent intent = new Intent(v.getContext(),NewActivityToRun.class);
startActivity(intent);//Error in this Line//
}
});
}
}
【问题讨论】:
-
检查这个例子,它肯定会帮助github.com/shanwu/SimpleListViewExample
-
将上下文传递给适配器。 1. 你应该保持你的内部类是静态的,这是防止内存泄漏的好方法。
标签: java android android-intent static