Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.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 如何基于NavigationItemSelected更改TextView?_Android_Android Studio_Navigation_Navigation Drawer - Fatal编程技术网

Android 如何基于NavigationItemSelected更改TextView?

Android 如何基于NavigationItemSelected更改TextView?,android,android-studio,navigation,navigation-drawer,Android,Android Studio,Navigation,Navigation Drawer,因此,我基本上有一个导航抽屉,它从“navigation_menu.xml”中的元素运行,但整个应用程序中都有一个标题,标题是TextView,我正试图根据选择的导航抽屉的哪个元素来更改它。我曾尝试使用导航项选择的,但它似乎不起作用 我想知道您是否可以帮我更改所选不同项目的TextView MainActivity.java public class MainActivity extends AppCompatActivity implements NavigationView.OnNavig

因此,我基本上有一个导航抽屉,它从“navigation_menu.xml”中的元素运行,但整个应用程序中都有一个标题,标题是
TextView
,我正试图根据选择的导航抽屉的哪个元素来更改它。我曾尝试使用导航项选择的
,但它似乎不起作用

我想知道您是否可以帮我更改所选不同项目的
TextView

MainActivity.java

public class MainActivity extends AppCompatActivity implements  NavigationView.OnNavigationItemSelectedListener{


    NavigationView nvView;
    TextView tvMain;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setNavigationViewListener();

        final DrawerLayout drawerLayout = findViewById(R.id.drawerLayout);

        findViewById(R.id.imageMenu).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                drawerLayout.openDrawer(GravityCompat.START);
            }
        });

        NavigationView nvView = findViewById(R.id.navigationView);
        nvView.setItemIconTintList(null);



        NavController navController = Navigation.findNavController(this, R.id.navHostFragment);
        NavigationUI.setupWithNavController(nvView, navController);



    }

    @Override
    public boolean onNavigationItemSelected(MenuItem item) {

        tvMain = (TextView) findViewById(R.id.tvMainTitle);

        switch (item.getItemId()) {

//I have also tried using the case (R.id.nav_home), (R.id.nav_members), etc for this and it doesn't work

            case 0:{
                tvMain.setText("Realtas");
                        break;
            }
            case 1:{
                tvMain.setText("Members Fragment");
                break;
            }

    }
    return true;}

    private void setNavigationViewListener(){
        NavigationView navigationView = (NavigationView) findViewById(R.id.navigationView);
        navigationView.setNavigationItemSelectedListener(this);
    }
}
这里是menu/navigation\u menu.xml

    <item
        android:id="@+id/nav_home"
        android:icon="@drawable/ic_home"
        android:title="@string/menu_home" />
    <item
        android:id="@+id/nav_members"
        android:icon="@drawable/ic_members"
        android:title="@string/menu_members" />
    <item
        android:id="@+id/nav_map"
        android:icon="@drawable/ic_ireland"
        android:title="@string/menu_map" />
    <item
        android:id="@+id/nav_news"
        android:icon="@drawable/ic_news"
        android:title="@string/menu_news" />
    <item
        android:id="@+id/nav_livestream"
        android:icon="@drawable/ic_livestream"
        android:title="@string/menu_livestream" />
    <item
        android:id="@+id/nav_election"
        android:icon="@drawable/ic_election"
        android:title="@string/menu_election" />

    <item android:title="@string/menu_misc">
    <menu>

        <item
            android:id="@+id/nav_login"
            android:icon="@drawable/ic_login"
        android:title="@string/menu_login"/>

        <item
            android:id="@+id/nav_register"
            android:icon="@drawable/ic_harp_circle"
            android:title="@string/menu_register"/>




    </menu>
    </item>
    <item android:title="Irish Version">
        <menu>
            <item
                android:id="@+id/nav_gaeilge"
                android:icon="@drawable/ic_gaeilge"
                android:title="@string/menu_gaeilge"/>

        </menu>
    </item>

</menu>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/navigation_realtas"
        android:title="@string/realtas" />

    <item
        android:id="@+id/navigation_members"
        android:title="@string/members" />
</menu>

这里还有导航/main.xml

<navigation xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main"
    app:startDestination="@+id/nav_home">

    <fragment
        android:id="@+id/nav_home"
        android:name="com.example.fypfinaltrial.HomeFragment"
        android:label="Home"
        tools:layout="@layout/fragment_home" >
        <action
            android:id="@+id/action_nav_home_to_nav_members"
            app:destination="@id/nav_members" />
        <action
            android:id="@+id/action_nav_home_to_nav_election"
            app:destination="@id/nav_election" />
        <action
            android:id="@+id/action_nav_home_to_nav_login"
            app:destination="@id/nav_login" />
        <action
            android:id="@+id/action_nav_home_to_nav_map"
            app:destination="@id/nav_map" />
        <action
            android:id="@+id/action_nav_home_to_nav_register"
            app:destination="@id/nav_register" />
        <action
            android:id="@+id/action_nav_home_to_nav_livestream"
            app:destination="@id/nav_livestream" />
        <action
            android:id="@+id/action_nav_home_to_nav_news"
            app:destination="@id/nav_news" />
    </fragment>
    <fragment
        android:id="@+id/nav_members"
        android:name="com.example.fypfinaltrial.MembersFragment"
        android:label="Members"
        tools:layout="@layout/fragment_members" />
    <fragment
        android:id="@+id/nav_map"
        android:name="com.example.fypfinaltrial.MapFragment"
        android:label="Interactive Map"
        tools:layout="@layout/fragment_map" >
        <action
            android:id="@+id/action_nav_map_to_dublinMapFragment"
            app:destination="@id/dublinMapFragment"
            app:enterAnim="@anim/fragment_open_enter"
            app:exitAnim="@anim/fragment_close_exit"/>
    </fragment>

    <fragment
        android:id="@+id/nav_news"
        android:name="com.example.fypfinaltrial.NewsFragment"
        android:label="Election News"
        tools:layout="@layout/fragment_news" />
    <fragment
        android:id="@+id/nav_election"
        android:name="com.example.fypfinaltrial.ElectionFinalFragment"
        android:label="Upcoming Election"
        tools:layout="@layout/fragment_election" >
        <action
            android:id="@+id/action_nav_election_to_electionResultsFragment"
            app:destination="@id/nav_election_results"
            app:enterAnim="@anim/fragment_open_enter"
            app:exitAnim="@anim/fragment_close_exit"/>
        <action
            android:id="@+id/action_nav_election_to_electionFragment"
            app:destination="@id/nav_election_map"
            app:enterAnim="@anim/fragment_open_enter"
            app:exitAnim="@anim/fragment_close_exit"/>
        <action
            android:id="@+id/action_nav_election_to_nav_check_register"
            app:destination="@id/nav_check_register"
            app:enterAnim="@anim/fragment_open_enter"
            app:exitAnim="@anim/fragment_close_exit"/>
    </fragment>


    <fragment
        android:id="@+id/nav_login"
        android:name="com.example.fypfinaltrial.LoginFragment"
        android:label="fragment_login"
        tools:layout="@layout/fragment_login" />
    <fragment
        android:id="@+id/nav_register"
        android:name="com.example.fypfinaltrial.RegisterFragment"
        android:label="Register"
        tools:layout="@layout/fragment_register" />
    <activity
        android:id="@+id/nav_gaeilge"
        android:name="com.example.fypfinaltrial.MainActivityGaeilge"
        android:label="Home Gaeilge"
        tools:layout="@layout/activity_main_gaeilge" />
    <fragment
        android:id="@+id/dublinMapFragment"
        android:name="com.example.fypfinaltrial.DublinMapFragment"
        android:label="fragment_dublin_map"
        tools:layout="@layout/fragment_dublin_map" />
    <fragment
        android:id="@+id/livestreamHighlightsFragment"
        android:name="com.example.fypfinaltrial.LivestreamHighlightsFragment"
        android:label="fragment_livestream_highlights"
        tools:layout="@layout/fragment_livestream_highlights" />
    <fragment
        android:id="@+id/nav_livestream"
        android:name="com.example.fypfinaltrial.LivestreamFragment"
        android:label="fragment_livestream"
        tools:layout="@layout/fragment_livestream" >
        <action
            android:id="@+id/action_nav_livestream_to_livestreamHighlightsFragment"
            app:destination="@id/livestreamHighlightsFragment"
            app:enterAnim="@anim/slide_in_right"
            app:exitAnim="@anim/slide_out_left"/>
    </fragment>
    <fragment
        android:id="@+id/nav_check_register"
        android:name="com.example.fypfinaltrial.CheckRegisterFragment"
        android:label="fragment_check_register"
        tools:layout="@layout/fragment_check_register" />
    <fragment
        android:id="@+id/nav_election_results"
        android:name="com.example.fypfinaltrial.ElectionResultsFragment"
        android:label="fragment_election_results"
        tools:layout="@layout/fragment_election_results" />
    <fragment
        android:id="@+id/nav_election_map"
        android:name="com.example.fypfinaltrial.ElectionFragment"
        android:label="fragment_election"
        tools:layout="@layout/fragment_election" />


</navigation>

使用菜单xml项的id更改案例值,切换案例值与项目id不匹配

switch (item.getItemId()) {

        case R.id.your_menu_item_id:
                //do what you want  
                break;
            }

使用菜单xml项的id更改事例值,则切换事例值与项id不匹配

switch (item.getItemId()) {

        case R.id.your_menu_item_id:
                //do what you want  
                break;
            }

您的问题在item.getItemId()中 您不应该在case语句中使用索引,而应该使用对应于navigation_menu.xml中每个菜单的id

    <item
        android:id="@+id/nav_home"
        android:icon="@drawable/ic_home"
        android:title="@string/menu_home" />
    <item
        android:id="@+id/nav_members"
        android:icon="@drawable/ic_members"
        android:title="@string/menu_members" />
    <item
        android:id="@+id/nav_map"
        android:icon="@drawable/ic_ireland"
        android:title="@string/menu_map" />
    <item
        android:id="@+id/nav_news"
        android:icon="@drawable/ic_news"
        android:title="@string/menu_news" />
    <item
        android:id="@+id/nav_livestream"
        android:icon="@drawable/ic_livestream"
        android:title="@string/menu_livestream" />
    <item
        android:id="@+id/nav_election"
        android:icon="@drawable/ic_election"
        android:title="@string/menu_election" />

    <item android:title="@string/menu_misc">
    <menu>

        <item
            android:id="@+id/nav_login"
            android:icon="@drawable/ic_login"
        android:title="@string/menu_login"/>

        <item
            android:id="@+id/nav_register"
            android:icon="@drawable/ic_harp_circle"
            android:title="@string/menu_register"/>




    </menu>
    </item>
    <item android:title="Irish Version">
        <menu>
            <item
                android:id="@+id/nav_gaeilge"
                android:icon="@drawable/ic_gaeilge"
                android:title="@string/menu_gaeilge"/>

        </menu>
    </item>

</menu>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/navigation_realtas"
        android:title="@string/realtas" />

    <item
        android:id="@+id/navigation_members"
        android:title="@string/members" />
</menu>
例如: 导航菜单.xml

    <item
        android:id="@+id/nav_home"
        android:icon="@drawable/ic_home"
        android:title="@string/menu_home" />
    <item
        android:id="@+id/nav_members"
        android:icon="@drawable/ic_members"
        android:title="@string/menu_members" />
    <item
        android:id="@+id/nav_map"
        android:icon="@drawable/ic_ireland"
        android:title="@string/menu_map" />
    <item
        android:id="@+id/nav_news"
        android:icon="@drawable/ic_news"
        android:title="@string/menu_news" />
    <item
        android:id="@+id/nav_livestream"
        android:icon="@drawable/ic_livestream"
        android:title="@string/menu_livestream" />
    <item
        android:id="@+id/nav_election"
        android:icon="@drawable/ic_election"
        android:title="@string/menu_election" />

    <item android:title="@string/menu_misc">
    <menu>

        <item
            android:id="@+id/nav_login"
            android:icon="@drawable/ic_login"
        android:title="@string/menu_login"/>

        <item
            android:id="@+id/nav_register"
            android:icon="@drawable/ic_harp_circle"
            android:title="@string/menu_register"/>




    </menu>
    </item>
    <item android:title="Irish Version">
        <menu>
            <item
                android:id="@+id/nav_gaeilge"
                android:icon="@drawable/ic_gaeilge"
                android:title="@string/menu_gaeilge"/>

        </menu>
    </item>

</menu>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/navigation_realtas"
        android:title="@string/realtas" />

    <item
        android:id="@+id/navigation_members"
        android:title="@string/members" />
</menu>

让我知道这是否有助于您

您的问题在item.getItemId()中 您不应该在case语句中使用索引,而应该使用对应于navigation_menu.xml中每个菜单的id

    <item
        android:id="@+id/nav_home"
        android:icon="@drawable/ic_home"
        android:title="@string/menu_home" />
    <item
        android:id="@+id/nav_members"
        android:icon="@drawable/ic_members"
        android:title="@string/menu_members" />
    <item
        android:id="@+id/nav_map"
        android:icon="@drawable/ic_ireland"
        android:title="@string/menu_map" />
    <item
        android:id="@+id/nav_news"
        android:icon="@drawable/ic_news"
        android:title="@string/menu_news" />
    <item
        android:id="@+id/nav_livestream"
        android:icon="@drawable/ic_livestream"
        android:title="@string/menu_livestream" />
    <item
        android:id="@+id/nav_election"
        android:icon="@drawable/ic_election"
        android:title="@string/menu_election" />

    <item android:title="@string/menu_misc">
    <menu>

        <item
            android:id="@+id/nav_login"
            android:icon="@drawable/ic_login"
        android:title="@string/menu_login"/>

        <item
            android:id="@+id/nav_register"
            android:icon="@drawable/ic_harp_circle"
            android:title="@string/menu_register"/>




    </menu>
    </item>
    <item android:title="Irish Version">
        <menu>
            <item
                android:id="@+id/nav_gaeilge"
                android:icon="@drawable/ic_gaeilge"
                android:title="@string/menu_gaeilge"/>

        </menu>
    </item>

</menu>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/navigation_realtas"
        android:title="@string/realtas" />

    <item
        android:id="@+id/navigation_members"
        android:title="@string/members" />
</menu>
例如: 导航菜单.xml

    <item
        android:id="@+id/nav_home"
        android:icon="@drawable/ic_home"
        android:title="@string/menu_home" />
    <item
        android:id="@+id/nav_members"
        android:icon="@drawable/ic_members"
        android:title="@string/menu_members" />
    <item
        android:id="@+id/nav_map"
        android:icon="@drawable/ic_ireland"
        android:title="@string/menu_map" />
    <item
        android:id="@+id/nav_news"
        android:icon="@drawable/ic_news"
        android:title="@string/menu_news" />
    <item
        android:id="@+id/nav_livestream"
        android:icon="@drawable/ic_livestream"
        android:title="@string/menu_livestream" />
    <item
        android:id="@+id/nav_election"
        android:icon="@drawable/ic_election"
        android:title="@string/menu_election" />

    <item android:title="@string/menu_misc">
    <menu>

        <item
            android:id="@+id/nav_login"
            android:icon="@drawable/ic_login"
        android:title="@string/menu_login"/>

        <item
            android:id="@+id/nav_register"
            android:icon="@drawable/ic_harp_circle"
            android:title="@string/menu_register"/>




    </menu>
    </item>
    <item android:title="Irish Version">
        <menu>
            <item
                android:id="@+id/nav_gaeilge"
                android:icon="@drawable/ic_gaeilge"
                android:title="@string/menu_gaeilge"/>

        </menu>
    </item>

</menu>
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/navigation_realtas"
        android:title="@string/realtas" />

    <item
        android:id="@+id/navigation_members"
        android:title="@string/members" />
</menu>

让我知道这是否有助于您

您在特定点上尝试过调试器吗?问题出在项上。getItemId()您的案例值是否与项相同。getItemId()?一切正常。但是,当我想改变tvMain的文本视图时,它似乎保持不变。没有错误,没有任何内容,只是没有改进项。getItemId()与您添加的案例不匹配。您必须使用菜单项id,发布菜单xml代码,我将给出我得到的答案,而不是
案例0:
案例1:
使用导航抽屉中项目的id。像
case R.id.nav_item1
case R.id.nav_item2
等等。你在特定点上尝试过调试器吗?问题在项上。getItemId()你的案例值与项相同吗?getItemId()一切都很好。但是,当我想改变tvMain的文本视图时,它似乎保持不变。没有错误,没有任何内容,只是没有改进项。getItemId()与您添加的案例不匹配。您必须使用菜单项id,发布菜单xml代码,我将给出我得到的答案,而不是
案例0:
案例1:
使用导航抽屉中项目的id。例如
案例R.id.nav_item1
案例R.id.nav_item2
等等。嗨,我以前试过,但它也不起作用嗨,我以前试过,但它也不起作用嗨,谢谢你的帮助,但出于某种原因,它不起作用?我不明白为什么,因为它在整个应用程序的其他情况下都能工作?嘿,你能不能也发布你的navigation_menu.xml?在main thing@mnleanoHi中发布了它,谢谢你的帮助,但出于某种原因,这不起作用?我不明白为什么,因为它在整个应用程序的其他情况下都能工作?嘿,你能把你的navigation_menu.xml也贴出来吗?把它贴在main thing@mnleano上