android - 如何使用 custom_layout.xml 文件中存在的 findviewbyid 从片段中获取 ID
问题描述
我想获取 Custom_layout.xml 中存在的微调器的 ID,并且我在 Fragment 中使用 findviewbyid 我尝试了 view.findviewbyId 和 getActivity().findviewbyId 但没有任何效果。请告诉我如何从片段中的 layout.xml 文件中获取 id。
自定义布局.xml
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:orientation="vertical"
android:padding="@dimen/_20sdp"
android:layout_height="match_parent">
<Spinner
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/spinner"/>
片段.java代码:
final Spinner spinner = view.findViewById(R.id.spinner);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { //this line is giving erro
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
text = spinner.getSelectedItem().toString();
if(text.equals("India")){
TypedArray indianewslogo = getResources().obtainTypedArray(R.array.indianews);
String[] indianewsname = getResources().getStringArray(R.array.indianewsnames);
newsModels = new ArrayList<>();
for(int i =0; i<indianewslogo.length(); i++) {
NewsModel newsModel = new NewsModel(indianewslogo.getResourceId(i,0),indianewsname[i]);
newsModels.add(newsModel);
}
GridLayoutManager gridLayoutManager =new GridLayoutManager(getContext(), 4);
homeBinding.recylerview.setLayoutManager(gridLayoutManager);
homeBinding.recylerview.setItemAnimator(new DefaultItemAnimator());
RecyclerAdapter adapter = new RecyclerAdapter(newsModels, getContext());
homeBinding.recylerview.setAdapter(new AlphaInAnimationAdapter(adapter));
}
else{
TypedArray newslogo = getResources().obtainTypedArray(R.array.allcountriesnews);
String[] newshref =getResources().getStringArray(R.array.allcountryhref);
String[] newstext = getResources().getStringArray(R.array.allcountriesnewsnames);
newsModels = new ArrayList<>();
for(int i =0; i<newslogo.length(); i++) {
NewsModel newsModel = new NewsModel(newslogo.getResourceId(i,0),newstext[i]);
newsModels.add(newsModel);
}
GridLayoutManager gridLayoutManager =new GridLayoutManager(getContext(), 4);
homeBinding.recylerview.setLayoutManager(gridLayoutManager);
homeBinding.recylerview.setItemAnimator(new DefaultItemAnimator());
RecyclerAdapter adapter = new RecyclerAdapter(newsModels, getContext());
homeBinding.recylerview.setAdapter(new AlphaInAnimationAdapter(adapter));
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
日志猫错误:
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.newsapp/com.example.newsapp.HomeActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setOnItemSelectedListener(android.widget.AdapterView$OnItemSelectedListener)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2988)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3066)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1764)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:202)
at android.app.ActivityThread.main(ActivityThread.java:6962)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:528)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:888)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Spinner.setOnItemSelectedListener(android.widget.AdapterView$OnItemSelectedListener)' on a null object reference
at com.example.newsapp.HomeFragment.onCreateView(HomeFragment.java:67)
at androidx.fragment.app.Fragment.performCreateView(Fragment.java:2600)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:881)
at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
解决方案
推荐阅读
- groovy - Adaptavist Script Runner (Groovy) - 点击创建子任务
- java - Java 中的缓冲读取器、行数、拆分、解析
- c# - LINQ 子选择
- sql - 解析远程 PROC SQL (SAS) 中的宏引用
- ruby-on-rails - 非常缓慢的迁移
- angular - 使用带有 typescript 联合类型 CustomObject 的 instanceof | 自定义对象[]
- javascript - 如何在 Safari 浏览器中关闭自动完成功能
- routing - HAProxy - 无法使用路径 ACL 重定向具有相似 URL 的请求
- arrays - VBA - 从数组中的字符串执行代码
- java - 使用 vlcj 读取 Java rtsp 流