Java 在片段中找不到符号变量R public类home扩展片段{ @可空 @凌驾 创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState){ //返回布局文件 //更改每个片段的R.layout.yourlayoutfilename postlist=(ListView)getView().findViewById(R.id.postlist); progressDialog=新建progressDialog(getActivity()); progressDialog.setMessage(“加载…”); progressDialog.setProgressStyle(progressDialog.STYLE_微调器); progressDialog.show(); StringRequest=newStringRequest(request.Method.GET,url,new Response.Listener()){ @凌驾 公共void onResponse(字符串s){ gson=新的gson(); list=(list)gson.fromJson(s,list.class); postTitle=新字符串[list.size()]; 对于(int i=0;iclean&rebuild,但错误仍然存在
我得到错误:找不到符号变量R。如何解决它。Java 在片段中找不到符号变量R public类home扩展片段{ @可空 @凌驾 创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState){ //返回布局文件 //更改每个片段的R.layout.yourlayoutfilename postlist=(ListView)getView().findViewById(R.id.postlist); progressDialog=新建progressDialog(getActivity()); progressDialog.setMessage(“加载…”); progressDialog.setProgressStyle(progressDialog.STYLE_微调器); progressDialog.show(); StringRequest=newStringRequest(request.Method.GET,url,new Response.Listener()){ @凌驾 公共void onResponse(字符串s){ gson=新的gson(); list=(list)gson.fromJson(s,list.class); postTitle=新字符串[list.size()]; 对于(int i=0;iclean&rebuild,但错误仍然存在,java,android,android-fragments,android-arrayadapter,Java,Android,Android Fragments,Android Arrayadapter,我得到错误:找不到符号变量R。如何解决它。 同一代码在“活动”中运行良好,但在“活动”中使用时产生错误。尝试将控件绑定到片段中 public class home extends Fragment{ @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
同一代码在“活动”中运行良好,但在“活动”中使用时产生错误。尝试将控件绑定到片段中
public class home extends Fragment{
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//returning our layout file
//change R.layout.yourlayoutfilename for each of your fragments
postlist = (ListView)getView().findViewById(R.id.postList);
progressDialog = new ProgressDialog(getActivity());
progressDialog.setMessage("Loading...");
progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.show();
StringRequest request = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
@Override
public void onResponse(String s) {
gson = new Gson();
list = (List) gson.fromJson(s, List.class);
postTitle = new String[list.size()];
for (int i = 0; i < list.size(); ++i) {
mapPost = (Map<String, Object>) list.get(i);
mapTitle = (Map<String, Object>) mapPost.get("title");
postTitle[i] = (String) mapTitle.get("rendered");
}
**postlist.setAdapter(new ArrayAdapter(getActivity(),android.R.layout.simple_list_item_1, postTitle));//R is not Resolved**
progressDialog.dismiss();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyerror) {
Toast.makeText(getActivity(),"Some error occurred", Toast.LENGTH_LONG).show();
}
});
return inflater.inflate(R.layout.home, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//you can set the title for your toolbar here for different fragments different titles
getActivity().setTitle("Home");
}
}
试试这个代码
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.home, container, false);
postlist = (ListView)rootView.findViewById(R.id.postList);
// your allll code
return rootView;
}
我也遇到了同样的情况。
我尝试按照建议引用rootView,但错误仍然存在。
我尝试了Build->clean&rebuild,但错误仍然存在 我最终删除了我的片段和相应的布局,然后通过android Studio界面重新创建了一个新片段(new=>fragment=>fragment(Blank)),并实现了与以前完全相同的代码,效果很好
我知道,这不是您可能要寻找的解决方案,但在花了太多时间尝试了我在网上找到的所有建议后,这是唯一对我有效的方法。调用
getView()
insideonCreateView()
view将导致NPE,原因很明显:行的问题:postlist.setAdapter(新数组适配器(getActivity(),android.R.layout.simple_list_item_1,postTitle));R未解决问题使用数组适配器行:postlist.setAdapter(新的数组适配器(getActivity(),android.R.layout.simple_list_item_1,postTitle));错误:在片段中找不到R变量。请一次性清理项目或重新生成项目,尝试添加或导入packegename.home.R;
View rootView
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (rootView != null) {
ViewGroup parent = (ViewGroup) rootView.getParent();
if (parent != null)
parent.removeView(rootView);
}
try {
rootView = inflater.inflate(R.layout.home, container, false);
} catch (InflateException e) {
}
return rootView;
}