0
我有含有用於顯示文件樹色帶卸下的從一個的LinearLayout視圖的視圖或範圍將導致一個NullPointerException中調用無焦點
<HorizontalScrollView
android:id="@+id/content_ribbon_scrollview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:scrollbars="none">
<LinearLayout
android:id="@+id/content_file_ribbon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
</LinearLayout>
</HorizontalScrollView>
項目被添加到所述的LinearLayout一個的LinearLayout一個HorizontalScrollView當用戶導航到他們時
void addRibbonItem(final Node node) {
final TextView view = (TextView) getLayoutInflater().inflate(R.layout.shard_ribbon_item, mRibbon, false);
view.setText(node.getName());
mRibbon.addView(view);
mRibbon.postDelayed(() -> mRibonScrollView.fullScroll(View.FOCUS_RIGHT), 17);
當一個項目被點擊時,它的所有項目的權利應該被刪除。
我試圖用removeViewsInLayout方法來做到這一點,以及反覆刪除最終的視圖。
(忽略缺乏邊界的檢查)
view.setOnClickListener(v -> {
mRibbon.removeViewsInLayout(mRibbon.indexOfChild(view) + 1, mRibbon.getChildCount());
});
view.setOnClickListener((v) -> {
final int index = mRibbon.indexOfChild(view);
for(int i = 0; i < index; i++) mRibbon.removeViewAt(mRibbon.getChildCount());
});
這兩種方法得到相同的異常
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.view.View.unFocus(android.view.View)' on a null object reference
at android.view.ViewGroup.removeViewsInternal(ViewGroup.java:4691)
at android.view.ViewGroup.removeViewsInLayout(ViewGroup.java:4539)
at com.tpb.projects.repo.content.ContentActivity.lambda$-com_tpb_projects_repo_content_ContentActivity_lambda$1(ContentActivity.java:67)
任何幫助理解。
編輯:
刪除並重新添加的意見的工作,但我不認爲這是一個很好的解決方案。
view.setOnClickListener(v -> {
final ArrayList<View> views = new ArrayList<>();
for(int i = 0; i <= mRibbon.indexOfChild(view); i++) {
views.add(mRibbon.getChildAt(i));
}
mRibbon.removeAllViews();
for(View item : views) {
mRibbon.addView(item);
}
});
這讓我刪除被點擊了查看,但我得到試圖消除各種從ViewGroup中,視圖時死機一樣這是我需要做。 –
怎麼樣call requestChildFocus 在刪除之前? – motis10
這也會崩潰,因爲ViewGroup爲getFocusedChild()返回null,這是requestChildFocus所必需的 –