实例引用访问静态成员的最佳解决方案

寻求静止

我几乎所有的班级都有这种方法。

//listener - info
private void clickInfoListener(final ImageView iv, final int title, final int text){
    iv.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            materialHelper.showInfoDialog(MainActivity.this, iv, title, text);
        }
    });
}

在助手类中访问此静态方法

public static void showInfoDialog(Context context, final ImageView iv, final int title, final int text){
    iv.setImageResource(R.drawable.ic_info_touched);
    //
    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setCancelable(true);
    builder.setTitle(title);
    builder.setMessage(text);
    builder.setPositiveButton(R.string.gotIt, null);
    builder.show();
    //
    Handler handler = new Handler();
    handler.postDelayed(new Runnable() {
        public void run() {
            iv.setImageResource(R.drawable.ic_info_primary);
        }
    }, 25);
}

我收到了“实例引用正在访问静态成员”的警告。我不知道如何在这里不使用“ this”。所以我有两个选择。

1)忽略皮棉警告

2)在我的助手方法中删除“ static”。

哪个更好?或提出第三种解决方案。

托德·塞维尔

警告是说您正在showInfoDialog通过实例materialHelper而不是通过类MaterialHelper本身调用静态方法这是“不好的”,因为它表明该方法实际上是一个依赖于实例中某些状态的实例方法。

解决的办法是更换

materialHelper.showInfoDialog(...)

在代码中的任何地方

MaterialHelper.showInfoDialog(...)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章