我想向 LinearLayout 添加一個物件,但它會拋出一個錯誤 Error line: at me.solo_team.futureleader.ui.news.NewsFragment.onCreateView(NewsFragment.java:62) ( addElement(uris.get(i),names.得到(一));)
新聞片段
private LayoutInflater inflater;
private ViewGroup container;
private LinearLayout nw;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_news, container, false);
nw = root.findViewById(R.id.news_list);
this.inflater = inflater;
this.container = container;
List<String> uris = Arrays.asList(
// links...
);
List<String> names = Arrays.asList(
// names
);
for(int i =0;i<9;i ){
addElement(uris.get(i),names.get(i));
}
return root;
}
private void addElement(String uri,String name){
FrameLayout row = (FrameLayout) inflater.inflate(R.layout.news_news, container,false);
ConstraintLayout cn = row.findViewById(R.id.news_obj);
Picasso.get().load(uri).into((ImageView)cn.getChildAt(1));
((TextView)cn.getChildAt(2)).setText(name);
nw.addView(row);
}
片段新聞:
<?xml version="1.0" encoding="utf-8"?>
<androidx.core.widget.NestedScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.news.NewsFragment">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@ id/news_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent">
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView>
mews_news.xml:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@ id/news_obj"
android:layout_width="match_parent"
android:layout_height="180dp"
android:layout_margin="15dp"
android:orientation="vertical"
app:contentPadding="10dp">
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/gray_gradient_with_corners"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<ImageView
android:id="@ id/news_obj_image"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:layout_marginRight="10dp"
android:background="@drawable/gray_gradient_with_corners"
android:src="@drawable/gray_gradient"
app:layout_constraintBottom_toTopOf="@id/news_obj_name"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ContentDescription" />
<TextView
android:id="@ id/news_obj_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginBottom="10dp"
android:autoSizeMaxTextSize="20sp"
android:autoSizeMinTextSize="12sp"
android:autoSizeStepGranularity="2sp"
android:autoSizeTextType="uniform"
android:text="news text"
android:textColor="@color/text_color1"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="@id/news_obj"
app:layout_constraintLeft_toLeftOf="@id/news_obj" />
</androidx.constraintlayout.widget.ConstraintLayout>
錯誤:
Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:6669) 在 java.lang.reflect.Method.invoke (Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 原因:android.view .InflateException: Binary XML file line #20: Binary XML file line #20: Error inflating class fragment 原因:android.view.InflateException: Binary XML file line #20: Error inflating class fragment 原因:java.lang.ArrayIndexOutOfBoundsException:長度=8;index=8 at java.util.Arrays$ArrayList.get(Arrays.java:3769) at me.solo_team.futureleader.ui.news.NewsFragment.onCreateView(NewsFragment.java:62) at androidx.fragment.app.Fragment。 performCreateView(Fragment.java:
uj5u.com熱心網友回復:
引起:java.lang.ArrayIndexOutOfBoundsException: length=8; index=8 at java.util.Arrays$ArrayList.get(Arrays.java:3769) at me.solo_team.futureleader.ui.news.NewsFragment.onCreateView(NewsFragment.java:62) 這是崩潰的真正原因^
在我看來,你的
for(int i =0;i<9;i ){
addElement(uris.get(i),names.get(i));
}
嘗試獲取超出范圍的專案。它應該是 i<8,因為雖然您的串列似乎有 8 個條目(長度 = 8 例外),但它們從 0 開始(0,1,2...6,7,總共 8 個條目),所以i=8 和 i=9 將超出范圍。
您還可以設定 i<uris.size(),如果您的 uris 和名稱串列的長度相同,這也應該可以防止崩潰
uj5u.com熱心網友回復:
這種型別的崩潰通常具有誤導性,因為您只能在 LogCat 中看到最近(或最近)的例外。
每當我遇到導致應用程式崩潰的錯誤時,我都會故意忽略第一次崩潰并重復之前的行為以觸發第二次崩潰。然后突然之間,LogCat 以完全不同的方式報告例外,通常指出錯誤的正確來源。是的,這就是精神錯亂的定義,因為你在重復同樣的行為,卻得到不同的結果。但這是安卓。瘋狂進來了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/468545.html
上一篇:由于底部導航,沒有看到浮動按鈕
