java - 查看全局类变量?

标签 java android android-studio

为什么这条车道上的“ View ”总是红色的..

final TextView username = (TextView) view.findViewById(R.id.profile_username);

我总是收到如下错误:

"error: cannot find symbol variable view"

我尝试过的示例代码:

ProfileFragment 类:

public class ProfileFragment extends Fragment {

MyBroadcastReceiver myReceiver = new MyBroadcastReceiver();


@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_profile, container, false);

    ImageView profilsettings = (ImageView) view.findViewById(R.id.profile_toolbar_image);
    profilsettings.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            BottomSheetDialog bottomSheetDialog = new BottomSheetDialog();
            bottomSheetDialog.show(getFragmentManager(), bottomSheetDialog.getTag());


        }

    });
    return view;
}

public class MyBroadcastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals("my_broadcast")){
            final TextView username = (TextView) view.findViewById(R.id.profile_username);
            username.setText(intent.getStringExtra("name"));


        }

    }


}

@Override
public void onResume() {
    super.onResume();
    getActivity().registerReceiver(myReceiver, new IntentFilter("my_broadcast"));
}

@Override
public void onPause() {
    super.onPause();
    getActivity().unregisterReceiver(myReceiver);
   }
}

谁能帮我改变什么?

非常感谢!

最佳答案

发生这种情况是因为您的 BroadcastReceiver 无法访问变量 View 。所以编译器说错误:找不到符号变量 View

要使BroadcastReceiver可以访问 View ,您可以遵循@Amine答案,或者您可以轻松地将view设置为member变量。

将 View 对象作为成员变量,如下所示

public class ProfileFragment extends Fragment {

MyBroadcastReceiver myReceiver = new MyBroadcastReceiver();
private View view;


@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
     view = inflater.inflate(R.layout.fragment_profile, container, false);

    ImageView profilsettings = (ImageView) view.findViewById(R.id.profile_toolbar_image);
    profilsettings.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            BottomSheetDialog bottomSheetDialog = new BottomSheetDialog();
            bottomSheetDialog.show(getFragmentManager(), bottomSheetDialog.getTag());


        }

    });
    return view;
}

public class MyBroadcastReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        if(intent.getAction().equals("my_broadcast")){
            final TextView username = (TextView) view.findViewById(R.id.profile_username);
            username.setText(intent.getStringExtra("name"));


        }

    }


}

@Override
public void onResume() {
    super.onResume();
    getActivity().registerReceiver(myReceiver, new IntentFilter("my_broadcast"));
}

@Override
public void onPause() {
    super.onPause();
    getActivity().unregisterReceiver(myReceiver);
   }
}

编码愉快!!

关于java - 查看全局类变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60736764/

相关文章:

java - 在 Java RESTful 资源中获取用户信息

java - 为什么我的 KeyListener 没有被调用?

android-studio - 带有 Picasso 重复图像的 Recyclerview

java - Ning 的 AsyncHttpClient 在请求 HTTPS 页面时不使用代理

java - 在 Microsoft Windows 中,我可以通过脚本管理 Java 运行时设置吗?

java - 数组列表无法正常工作

android - 使用 Node.JS 向 Firebase 发出 HTTPS 请求

不支持 Android Linkify 电子邮件

java - 异步任务 : class should be static or leaks might occur

Android Studio 代码样式方案每次启动时自动重置为默认值