为什么这条车道上的“ 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/