【发布时间】:2022-10-07 19:38:29
【问题描述】:
XML 文件
这里是activity_main.xml文件。包含两个片段片段列表.xml和fragment_deatails.xml
<androidx.fragment.app.FragmentContainerView
android:id=\"@+id/fragmentContainerView\"
android:name=\"com.udemy.fragmentsapp.ListFrag\"
android:layout_width=\"0dp\"
android:layout_height=\"match_parent\"
android:layout_weight=\"1\"
tools:layout=\"@layout/fragment_list\" />
<androidx.fragment.app.FragmentContainerView
android:id=\"@+id/fram2\"
android:name=\"com.udemy.fragmentsapp.DetailFrag\"
android:layout_width=\"0dp\"
android:layout_height=\"match_parent\"
android:layout_weight=\"2\"
tools:layout=\"@layout/fragment_detail\" />
这里是片段列表.xml文件。包含列表显示
<ListView
android:id=\"@+id/lvList\"
android:layout_width=\"match_parent\"
android:layout_height=\"match_parent\" />
这里是片段详细信息.xml文件。包含一个文本视图
<TextView
android:id=\"@+id/tvDescription\"
android:layout_width=\"wrap_content\"
android:layout_height=\"wrap_content\"
android:text=\"@string/textview\"
android:layout_marginTop=\"20dp\"
android:layout_marginRight=\"20dp\"
android:layout_marginLeft=\"20dp\"
android:textSize=\"18dp\"
android:textStyle=\"bold\"
android:textColor=\"@color/black\"/>
Java 文件
这里是ListFrag.java文件。
ItemSelected activity;
public interface ItemSelected
{
void onItemSelected(int index);
}
public ListFrag() {
// Required empty public constructor
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
activity = (ItemSelected) context;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ArrayList<String> data = new ArrayList<>();
for (int i = 1; i < 6; i++) {
data.add(i + \". This is item \" + i);
}
setListAdapter(new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,data));
}
@Override
public void onListItemClick(@NonNull ListView l, @NonNull View v, int position, long id) {
super.onListItemClick(l, v, position, id);
activity.onItemSelected(position);
}
这里是DetailFrag.java文件。
public DetailFrag(){
super(R.layout.fragment_detail);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_detail, container, false);
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
@Override
public void onAttach(@NonNull Context context) {
super.onAttach(context);
}
这里是MainActivity.java文件。当我想访问 ID \"tvDescription\" 时,它会显示错误:@layout/activity_main 不包含 ID 为 tvDescription 的声明。
请帮我。如何访问 ID?告诉我哪一种是查找 ID 的方法。
TextView tvDescription;
ArrayList<String> description;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvDescription = findViewById(R.id.tvDescription);
for (int i = 1; i < 6; i++) {
description.add(\"Description for item \" + i);
}
}
@Override
public void onItemSelected(int index) {
tvDescription.setText(description.get(index));
}
请在您的 IDE 中运行此代码。
标签: java android xml android-fragments findviewbyid