Android 在用户在上一个活动中输入后更新NavigationDrawer中的文本视图
我想在NavigationDrawer中显示一些信息。此信息由用户在以前的活动中输入。我使用意图将信息发送到抽屉的主要活动 MainActivity(用户输入详细信息后) 我有一个导航抽屉的特定布局,它包含一个textview,我想用字符串测试更新它。这是片段代码及其xml 碎片抽屉类Android 在用户在上一个活动中输入后更新NavigationDrawer中的文本视图,android,android-fragments,navigation-drawer,Android,Android Fragments,Navigation Drawer,我想在NavigationDrawer中显示一些信息。此信息由用户在以前的活动中输入。我使用意图将信息发送到抽屉的主要活动 MainActivity(用户输入详细信息后) 我有一个导航抽屉的特定布局,它包含一个textview,我想用字符串测试更新它。这是片段代码及其xml 碎片抽屉类 public FragmentDrawer() { } public void setDrawerListener(FragmentDrawerListener listener) { this.dr
public FragmentDrawer() {
}
public void setDrawerListener(FragmentDrawerListener listener) {
this.drawerListener = listener;
}
public static List<NavDrawerItem> getData() {
List<NavDrawerItem> data = new ArrayList<>();
// preparing navigation drawer items
for (int i = 0; i < titles.length; i++) {
NavDrawerItem navItem = new NavDrawerItem();
navItem.setTitle(titles[i]);
navItem.setIcon(icons.getResourceId(i,-1));
data.add(navItem);
}
return data;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// drawer labels
titles = getActivity().getResources().getStringArray(R.array.nav_drawer_labels);
icons = getResources().obtainTypedArray(R.array.nav_drawer_icons);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflating view layout
View layout = inflater.inflate(R.layout.fragment_navigation_drawer, container, false);
recyclerView = (RecyclerView) layout.findViewById(R.id.drawerList);
TextView userID = (TextView) layout.findViewById(R.id.nav_title_user);
adapter = new NavigationDrawerAdapter(getActivity(), getData());
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity(), recyclerView, new ClickListener() {
@Override
public void onClick(View view, int position) {
drawerListener.onDrawerItemSelected(view, position);
mDrawerLayout.closeDrawer(containerView);
}
@Override
public void onLongClick(View view, int position) {
}
}));
return layout;
}
public void setUp(int fragmentId, DrawerLayout drawerLayout, final Toolbar toolbar) {
containerView = getActivity().findViewById(fragmentId);
mDrawerLayout = drawerLayout;
mDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {
@Override
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
getActivity().invalidateOptionsMenu();
}
@Override
public void onDrawerClosed(View drawerView) {
super.onDrawerClosed(drawerView);
getActivity().invalidateOptionsMenu();
}
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
super.onDrawerSlide(drawerView, slideOffset);
toolbar.setAlpha(1 - slideOffset / 2);
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
mDrawerLayout.post(new Runnable() {
@Override
public void run() {
mDrawerToggle.syncState();
}
});
}
公共碎片抽屉(){
}
public void setDrawerListener(FragmentDrawerListener侦听器){
this.drawerListener=侦听器;
}
公共静态列表getData(){
列表数据=新的ArrayList();
//准备导航抽屉项目
对于(int i=0;i
FramgentDrawer.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white">
<RelativeLayout
android:id="@+id/nav_header_container"
android:layout_width="match_parent"
android:layout_height="140dp"
android:layout_alignParentTop="true"
android:background="@color/colorPrimary">
......
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceInverse"
android:text="@string/welcome_user"
android:id="@+id/nav_title_user"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
android:layout_marginBottom="10dp"/>
</RelativeLayout>
<android.support.v7.widget.RecyclerView
android:id="@+id/drawerList"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="15dp"
android:layout_below="@id/nav_header_container" />
......
我已经设法用图标、标签和标题更新了抽屉中的列表。我使用了一个可回收的适配器
我遇到的问题是,这些细节来自资源(strings.xml)
创建NavigationFragment时,如何更新其textview?如何向片段发送一个值,以便在片段的OnCreateView中使用它?我对它研究得太多了。解决方案非常简单……尽管我花了3个小时才弄明白:/ 在NavigationFragment中,我创建了一个用字符串更新textview的方法。在MainActivity中,我从intent中获取信息,我只调用了如下方法:
drawerFragment.setUserTextView(info);
这就是为什么休息很重要^^ 显示您的xml和代码我面临同样的问题,您能告诉我您是如何更新列表项文本的,例如“登录”到“注销”的吗?我面临同样的问题,您能告诉我您是如何更新列表项文本的,例如“登录”到“注销”的吗?
drawerFragment.setUserTextView(info);