我在我的Home Fragment中创建一个TabLayout,它是底部NavBar的一部分。 我已经完成了我所知道的一切,以便找出为什么一旦我导航到家而又没有线索,应用程序停止工作....
我已经调试并清理了应用,但一切都很成功,没有检测到错误..
这里有我的代码,有人可以提供帮助:我有两个标签1- Landmark 2- Events,每个标签也是一个片段。
HomeFragemnt.java
package com.example.assus.wijhah0;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.BottomNavigationView;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
public class HomeFragment extends Fragment {
private TabLayout tabLayout;
private AppBarLayout appBarLayout;
private ViewPager viewPager;
public HomeFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_home, container, false);
tabLayout = v.findViewById(R.id.tablayout_id);
appBarLayout = v.findViewById(R.id.tablayout_id);
viewPager = v.findViewById(R.id.viewpager_id);
ViewPagerAdapter adapter = new ViewPagerAdapter(getFragmentManager());
//adding fragments
adapter.AddFragment( new LandmarkFragment(), "Landmark");
adapter.AddFragment(new EventsFragment(), "Events");
//adapter set up
viewPager.setAdapter(adapter);
tabLayout.setupWithViewPager(viewPager);
// Inflate the layout for this fragment
return v;
}}
fragment_home.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".HomeFragment"
android:orientation="vertical">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:gravity="center"
app:elevation="0dp"
android:id="@+id/appbarid">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:src="@drawable/travel"/>
</android.support.design.widget.AppBarLayout>
<android.support.design.widget.TabLayout
android:id="@+id/tablayout_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimary"
app:tabGravity="fill"
app:tabIndicatorColor="@color/color1"
app:tabMode="fixed"
app:tabTextColor="@color/white">
</android.support.design.widget.TabLayout>
<android.support.v4.view.ViewPager
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/viewpager_id"></android.support.v4.view.ViewPager>
</LinearLayout>
此 ViewPageAdapter.java
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;
import java.util.List;
public class ViewPagerAdapter extends FragmentPagerAdapter{
private final List<Fragment> fragmentList = new ArrayList<>();
private final List<String> FragmentListTitles = new ArrayList<>();
public ViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return FragmentListTitles.size();
}
public CharSequence getPageTitle(int position) {
return FragmentListTitles.get(position);
} //end CharSequence
public void AddFragment( Fragment fragment, String Title) {
fragmentList.add(fragment);
FragmentListTitles.add(Title);
} // end Addfragment
} //end class
答案 0 :(得分:0)
见这里
public class DnDTreeCell extends TreeCell<String> {
public DnDTreeCell() {
// ON SOURCE NODE.
setOnDragDetected(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
TreeItem<String> item = getTreeItem();
if (isEmpty() || item == null || item.getParent() == null) {
return; // don't start drag on empty cell or root cell
}
Dragboard dragBoard = startDragAndDrop(TransferMode.MOVE);
ClipboardContent content = new ClipboardContent();
content.put(DataFormat.PLAIN_TEXT, item.getValue());
dragBoard.setContent(content);
event.consume();
}
});
setOnDragDone(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent dragEvent) {
dragEvent.consume();
}
});
setOnDragOver(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent dragEvent) {
if (!(dragEvent.getGestureSource() instanceof TreeCell)
|| ((TreeCell) dragEvent.getGestureSource()).getTreeView() != getTreeView()) {
return; // only allow dragging from this TreeView
}
TreeItem<String> sourceItem = ((TreeCell<String>) dragEvent.getGestureSource()).getTreeItem();
// prevent item from being added to own subtree
TreeItem<String> item = getTreeItem();
while (item != null && item != sourceItem) {
item = item.getParent(); // go up through the tree until dragged item or root is found
}
if (item == null) {
// We accept the transfer!!!!!
dragEvent.acceptTransferModes(TransferMode.MOVE);
}
dragEvent.consume();
}
});
setOnDragDropped(new EventHandler<DragEvent>() {
@Override
public void handle(DragEvent dragEvent) {
TreeItem<String> itemToMove = ((TreeCell<String>) dragEvent.getGestureSource()).getTreeItem();
TreeItem<String> newParent = getTreeItem();
// Remove from former parent.
itemToMove.getParent().getChildren().remove(itemToMove);
// Add to new parent.
newParent.getChildren().add(itemToMove);
newParent.setExpanded(true);
dragEvent.setDropCompleted(true);
dragEvent.consume();
}
});
}
@Override
protected void updateItem(String item, boolean empty) {
System.out.format("\nupdateItem - [%s]\n", item);
super.updateItem(item, empty);
setText(item == null ? "" : item);
}
}
更改:
tabLayout = v.findViewById(R.id.tablayout_id); appBarLayout = v.findViewById(R.id.tablayout_id);
Fot this:
tabLayout = v.findViewById(R.id.tablayout_id); appBarLayout = v.findViewById(R.id.appbarid);
这是更好的
@Override public int getCount() { return FragmentListTitles.size(); }