android - 设置视图寻呼机 id 以显示视图寻呼机组
问题描述
尝试设置 id 以编程方式查看寻呼机时,应用程序会出现转换错误。如果不以编程方式设置 id,则只能看到第一个视图寻呼机内容。如何以编程方式创建视图寻呼机,它可以在另一个下方显示视图寻呼机?我正在尝试将视图寻呼机添加到 xml 的线性布局中。一旦我将 setId 用于视图寻呼机,它就会崩溃。它甚至不去片段的 onCreateView。那么它指的是哪个 TextView 呢?
java.lang.ClassCastException: android.widget.TextView cannot be cast to android.view.ViewGroup
at androidx.fragment.app.FragmentTransition.configureTransitionsOrdered(FragmentTransition.java:314)
at androidx.fragment.app.FragmentTransition.startTransitions(FragmentTransition.java:138)
at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1862)
at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1820)
at androidx.fragment.app.FragmentManagerImpl.execSingleAction(FragmentManagerImpl.java:1695)
at androidx.fragment.app.BackStackRecord.commitNowAllowingStateLoss(BackStackRecord.java:299)
at androidx.fragment.app.FragmentStatePagerAdapter.finishUpdate(FragmentStatePagerAdapter.java:256)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1244)
at androidx.viewpager.widget.ViewPager.populate(ViewPager.java:1092)
at androidx.viewpager.widget.ViewPager.onMeasure(ViewPager.java:1622)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
at android.view.View.measure(View.java:22071)
at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1308)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.widget.ScrollView.onMeasure(ScrollView.java:350)
at android.view.View.measure(View.java:22071)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:715)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:461)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:143)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1514)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:806)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:685)
at android.view.View.measure(View.java:22071)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6602)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:185)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:724)
at android.view.View.measure(View.java:22071)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:2422)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1504)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1761)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1392)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6752)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:658)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
主要活动
private fun createviewpagers(listOfQuestionnaire: List<Questionnaire>) {
for (i in 0 until listOfQuestionnaire.size) {
var viewPager = ViewPager(context)
viewPager.id = View.generateViewId()
viewpagerAdapter= ProgramQuestionAnswerActivityAdapter(supportFragmentManager,listOfQuestionnaire.get(i))
viewPager.setClipToPadding(false)
viewPager.setPadding(70, 0, 70, 0)
viewPager.setPageMargin(40)
viewPager.setOffscreenPageLimit(8)
viewgroupmain.addView(viewPager)
viewPager.adapter= viewpagerAdapter;
}
}
程序问题答案活动适配器
public class ProgramQuestionAnswerActivityAdapter extends FragmentStatePagerAdapter {
int mCurrentPosition;
Questionnaire activitiesList;
public ProgramQuestionAnswerActivityAdapter(FragmentManager fm, Questionnaire activities) {
super(fm);
activitiesList = activities;
}
@Override
public int getCount() {
return activitiesList.getQuestions().getData().size();
}
@Override
public Fragment getItem(int position) {
QuestionnaireQuestions questionanswer = activitiesList.getQuestions().getData().get(position);
mCurrentPosition = position;
return ProgramQuestionAnswerFragment.newInstance(activitiesList.getName(),questionanswer, position, activitiesList.getQuestions().getData().size());
}
}
程序问题答案片段
public class ProgramQuestionAnswerFragment extends Fragment implements TimePickerDialogViewInterface {
@BindView(R.id.viewgroup)
LinearLayout mainparentviewgroup;
@BindView(R.id.textCurrentQuestionnumber)
TextView textCurrentQuestionnumber;
@BindView(R.id.ivnext)
ImageView tvnext;
@BindView(R.id.ivback)
ImageView tvback;
Context context;
QuestionnaireQuestions acttivities;
private int pos, size;
private String name;
private Unbinder unbinder;
List<QuestionnaireAnswer> selectedanswer = new ArrayList<>();
private Integer timeclicked = 0;
TextView txtTime;
private SimpleDateFormat displayableTimeFormatter = new SimpleDateFormat("HH:mm", Locale.getDefault());
public static ProgramQuestionAnswerFragment newInstance(String name, QuestionnaireQuestions activities, int position, int activitiesListsize) {
ProgramQuestionAnswerFragment f = new ProgramQuestionAnswerFragment();
Bundle b = new Bundle();
b.putSerializable("activities", new Gson().toJson(activities));
b.putInt("pos", position);
b.putString("name", name);
b.putInt("size", activitiesListsize);
f.setArguments(b);
return f;
}
@Override
public void onAttach(Context _context) {
super.onAttach(_context);
if (_context instanceof Activity) {
context = _context;
}
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Log.e(" on create ", "view");
View view = inflater.inflate(R.layout.programme_questionnaire_group, container, false);
acttivities = new Gson().fromJson(getArguments().getString("activities"), QuestionnaireQuestions.class);
pos = getArguments().getInt("pos");
size = getArguments().getInt("size");
name = getArguments().getString("name");
unbinder = ButterKnife.bind(this, view);
mainparentviewgroup.setTag(0);
return view;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
if (acttivities != null) {
if (acttivities.getQuestionTypeId()==( SINGLE_ANSWER_QUESTION_TYPE_ID)) {
createFreeTextQuestionAnswer(acttivities);
}
}
}
private void createFreeTextQuestionAnswer(QuestionnaireQuestions activities) {
LayoutInflater vi = (LayoutInflater) getActivity().getSystemService(getActivity().LAYOUT_INFLATER_SERVICE);
View itemView = vi.inflate(R.layout.programme_question_free_text_layout, mainparentviewgroup, false);
TextView txtTitle = itemView.findViewById(R.id.tvtitle);
TextView txtBody = itemView.findViewById(R.id.tvbody);
txtTitle.setText(name);
txtBody.setText(activities.getQuestion());
mainparentviewgroup.addView(itemView);
}
R.layout.programme_questionnaire_group
version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:id="@+id/rel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<androidx.cardview.widget.CardView
android:id="@+id/card"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
card_view:cardBackgroundColor="@color/text"
card_view:cardCornerRadius="6dp">
<!--YOUR CONTENT-->
<RelativeLayout
android:id="@+id/rv"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/viewgroup"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
</LinearLayout>
<RelativeLayout
android:id="@+id/relnex"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/viewgroup"
android:layout_alignParentBottom="true"
android:layout_gravity="bottom"
android:layout_weight="1"
android:background="@color/white"
android:gravity="bottom"
android:paddingTop="14dp">
<TextView
android:id="@+id/textCurrentQuestionnumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginBottom="5dp"
android:gravity="center_horizontal"
android:textColor="@color/lightGreyText"
android:textSize="18sp" />
<!--<TextView-->
<!--android:id="@+id/tvnext"-->
<!--android:layout_width="wrap_content"-->
<!--android:layout_height="wrap_content"-->
<!--android:layout_alignParentRight="true"-->
<!--android:layout_marginTop="5dp"-->
<!--android:layout_marginRight="22dp"-->
<!--android:drawableRight="@drawable/right_arrow"-->
<!--android:drawableTint="@color/black"-->
<!--android:drawablePadding="2dp"-->
<!--android:fontFamily="sans-serif"-->
<!--android:letterSpacing="0.0"-->
<!--android:text="NEXT"-->
<!--android:textColor="#3a98e4"-->
<!--android:textSize="13sp"-->
<!--android:textStyle="bold"-->
<!--android:visibility="gone" />-->
</RelativeLayout>
<ImageView
android:id="@+id/ivnext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:padding="15dp"
android:src="@drawable/right_arrow"
android:tint="@color/black"
android:visibility="gone" />
<ImageView
android:id="@+id/ivback"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:padding="15dp"
android:src="@drawable/left_arrow"
android:tint="@color/black"
android:visibility="gone" />
</RelativeLayout>
</androidx.cardview.widget.CardView>
</RelativeLayout>
program_question_free_text_layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:orientation="vertical"
android:id="@+id/linear"
android:padding="10dp">
<TextView
android:id="@+id/tvtitle"
style="@style/smallBoldText"
android:text="my leep "
android:textSize="15sp" />
<TextView
android:id="@+id/tvbody"
style="@style/smallText"
android:layout_marginTop="10dp"
android:layout_gravity="left"
android:gravity="left"
android:text="my leep " />
<EditText
android:id="@+id/etfreeanswer"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:hint="Type here..."
android:gravity="top"
android:background="@drawable/edittext_greysolid_border"
android:minHeight="108dp" />
</LinearLayout>
解决方案
推荐阅读
- django - Django Rest Framework - 过滤数据的问题
- encryption - 是否真的可以解码/解密旧的 Msg Plus 聊天日志文件?
- swiftui - SwiftUI 按比例更改视图大小
- python - tkinter 小部件触发跟踪功能
- if-statement - 如何在 thymleaf 中使用多个条件 - “If 语句”
- python - Tensorflow 集线器错误“无法从 'tensorflow.python.tpu.tpu_embedding' 导入名称 'MomentumParameters'”
- firebase - 如何从firebase中的其他集合中查询?
- python - 熊猫通过不同的时间间隔和按列分组平均
- parceljs - 与 Parcel 2 一起使用的正确版本的变压器图像是什么?
- python - 使用 pyinstaller 将 py 转换为 exe 后导入 DLL 失败