Android 如何基于NavigationItemSelected更改TextView?
因此,我基本上有一个导航抽屉,它从“navigation_menu.xml”中的元素运行,但整个应用程序中都有一个标题,标题是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
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上