Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在用户在上一个活动中输入后更新NavigationDrawer中的文本视图_Android_Android Fragments_Navigation Drawer - Fatal编程技术网

Android 在用户在上一个活动中输入后更新NavigationDrawer中的文本视图

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

我想在NavigationDrawer中显示一些信息。此信息由用户在以前的活动中输入。我使用意图将信息发送到抽屉的主要活动

MainActivity(用户输入详细信息后)

我有一个导航抽屉的特定布局,它包含一个textview,我想用字符串测试更新它。这是片段代码及其xml

碎片抽屉类

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);