我發現這個解決方案的新行問題,但我似乎無法得到它的工作,我一直在檢查每一個評論,我似乎無法找到任何人有同樣的問題我。 Android - multi-line linear layout 我一直在試圖找到StackOverFlow類似的線程,但無法找到任何。Android:linearLayout。新行和指定的孩子已經有父母
我的代碼:
E/AndroidRuntime(10872): FATAL EXCEPTION: main
E/AndroidRuntime(10872): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.xiloandroid/activities.DetailedOpenCasesActivity}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
E/AndroidRuntime(10872): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2265)
E/AndroidRuntime(10872): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2315)
E/AndroidRuntime(10872): at android.app.ActivityThread.access$600(ActivityThread.java:149)
E/AndroidRuntime(10872): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1297)
E/AndroidRuntime(10872): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(10872): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime(10872): at android.app.ActivityThread.main(ActivityThread.java:5235)
E/AndroidRuntime(10872): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime(10872): at java.lang.reflect.Method.invoke(Method.java:525) E/AndroidRuntime(10872): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:742)
E/AndroidRuntime(10872): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
E/AndroidRuntime(10872): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime(10872): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
E/AndroidRuntime(10872): at android.view.ViewGroup.addViewInner(ViewGroup.java:3509)
E/AndroidRuntime(10872): at android.view.ViewGroup.addView(ViewGroup.java:3380)
E/AndroidRuntime(10872): at android.view.ViewGroup.addView(ViewGroup.java:3325)
E/AndroidRuntime(10872): at android.view.ViewGroup.addView(ViewGroup.java:3301)
E/AndroidRuntime(10872): at activities.DetailedOpenCasesActivity.setUpListToLinearLayout(DetailedOpenCasesActivity.java:287)
E/AndroidRuntime(10872): at activities.DetailedOpenCasesActivity.update(DetailedOpenCasesActivity.java:242)
E/AndroidRuntime(10872): at activities.DetailedOpenCasesActivity.onCreate(DetailedOpenCasesActivity.java:98)
E/AndroidRuntime(10872): at android.app.Activity.performCreate(Activity.java:5133)
E/AndroidRuntime(10872): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
E/AndroidRuntime(10872): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2229)
我想這可能是因爲該行的:
l1.addView(l1Also);
我一直停留在
public void setUpListToLinearLayout(LinearLayout l1, ArrayList collection, String header){
Display display = getWindowManager().getDefaultDisplay();
int maxWidth = display.getWidth() - 10;
if (collection.size()>0){
LinearLayout l1Also = new LinearLayout(this);
l1Also.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
l1Also.setOrientation(LinearLayout.HORIZONTAL);
TextView txtSample = new TextView(this);
txtSample.setText(header);
l1Also.addView(txtSample);
txtSample.measure(0, 0);
int widthSoFar = txtSample.getMeasuredWidth();
for (int i = 0; i < collection.size(); i ++){
TextView txtSamItem = new TextView(this);
txtSamItem.setText(collection.get(i).toString());
txtSamItem.setPadding(10, 0, 10, 0);
txtSamItem.setTag(collection.get(i));
txtSamItem.measure(0, 0);
widthSoFar += txtSamItem.getMeasuredWidth();
if (widthSoFar>=maxWidth){
l1.addView(l1Also);
l1Also.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
l1Also.setOrientation(LinearLayout.HORIZONTAL);
l1Also.addView(txtSamItem);
widthSoFar = txtSamItem.getMeasuredWidth();
} else {
l1Also.addView(txtSamItem);
}
}
l1.addView(l1Also);
}
}
林在logcat中得到這這個問題半天,我真的很感謝一些幫助。
With: l1.removeView(l1Alos); 我沒有得到下一行的下一個視圖,所以我不能真正刪除視圖。 有其他想法嗎? :) – 2014-09-11 07:26:42
然後刪除l1.addView(l1Also);來自if()條件。 – 2014-09-11 07:29:08
它仍然不是答案,因爲它仍然只是把它可以放在第一行,然後什麼都不做。但數組中的其餘部分仍然需要位於linearLayout中,只是在一條新線上,而不是以這種方式發生。 – 2014-09-11 07:38:35