我对WeakReference有个问题。我发现这个代码出错了..。你能帮帮我吗?我不明白如何使用WeakReference与按钮单击事件。
public class MainActivity extends FragmentActivity {
private final WeakReference<Context> contextReference;
public MainActivity(Context context) {
this.contextReference = new WeakReference<Context>(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnArrivi.setOnClickListener(new View.OnClickListener() {
Context context = this.contextReference.get();
if(this.contextReference.get() != null) {
Intent intent = new Intent(context, Arrivi.class);
intent.putExtra("A_Compagnia", A_Compagnia);
intent.putExtra("A_CodiceVolo", A_CodiceVolo);
intent.putExtra("A_Citta", A_Citta);
intent.putExtra("A_OraPrevista", A_OraPrevista);
intent.putExtra("A_OraStimata", A_OraStimata);
intent.putExtra("thread",thread);
context.startActivity(intent);
}
}错误:
contextReference cannot be resolved or is not a field这里:
if(this.contextReference.get() != null) {发布于 2014-05-17 11:15:17
你有两个问题。
首先,您需要实现onClick方法的View.OnClickListener
你的第二个问题是“这个”在内部匿名类中,新的View.OnClickListener()引用的是匿名类,而不是MainActivity。这是一个常见的错误。
使用
MainActivity.this.contextReference相反,或者只是
contextReference因为这是您代码中的一个完全限定的名称。
实际上,在上面的行中,您已经这样做了,所以只需使用上下文,如下所示:
public class MainActivity extends FragmentActivity {
private final WeakReference<Context> contextReference;
public MainActivity(Context context) {
this.contextReference = new WeakReference<Context>(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btnArrivi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = contextReference.get();
if(context != null) {
Intent intent = new Intent(context, Arrivi.class);
intent.putExtra("A_Compagnia", A_Compagnia);
intent.putExtra("A_CodiceVolo", A_CodiceVolo);
intent.putExtra("A_Citta", A_Citta);
intent.putExtra("A_OraPrevista", A_OraPrevista);
intent.putExtra("A_OraStimata", A_OraStimata);
intent.putExtra("thread",thread);
context.startActivity(intent);
}
}
}https://stackoverflow.com/questions/23710505
复制相似问题