gpt4 book ai didi

android - 如何在单击的 Material 抽屉导航菜单项上启动 Activity

转载 作者:太空狗 更新时间:2023-10-29 15:35:57 24 4
gpt4 key购买 nike

我正在使用可折叠操作栏。尝试启动新 Activity 时出现错误:无法解析构造函数“Intent(匿名 android.support.design.widget.NavigationView.OnNavigationItemSelectedListener,java.lang.Class)”

请帮我解决这个问题:

我们可以使用从抽屉导航菜单项点击开始新 Activity 吗?

或者

我们只能选择在菜单项点击时替换和显示抽屉导航中的 fragment

FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.containerView,new SentFragment()).commit();

如果是,那么如何替换选项卡 Activity 和 viewpager 并设置操作栏高度?

activity_main.xml

<android.support.v4.widget.DrawerLayout 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/drawerLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.test.app.activities.MainActivity">

<android.support.design.widget.CoordinatorLayout
android:id="@+id/rootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent">

<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="@dimen/app_bar_height"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="48dp"
android:minHeight="?attr/actionBarSize"

app:layout_scrollFlags="scroll|enterAlways"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

<android.support.design.widget.TabLayout
android:id="@+id/tabLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:tabIndicatorHeight="4dp"
app:tabGravity="fill"
app:tabMode="scrollable"
app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" />

</android.support.design.widget.AppBarLayout>

<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layout_behavior="@string/appbar_scrolling_view_behavior" />



<android.support.design.widget.FloatingActionButton
android:id="@+id/fabBtn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="bottom|end"
android:layout_marginBottom="@dimen/fab_margin_bottom"
android:layout_marginRight="@dimen/fab_margin_right"
android:src="@drawable/ic_plus"

app:borderWidth="0dp"
app:fabSize="normal" />

</android.support.design.widget.CoordinatorLayout>

<android.support.design.widget.NavigationView
android:id="@+id/navigation"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
app:headerLayout="@layout/nav_header"
app:itemIconTint="@color/nav_item_icon_tint_color"
app:itemTextColor="@color/nav_item_text_color"
app:menu="@menu/navigation_drawer_items" />

主 Activity .java

navigation = (NavigationView) findViewById(R.id.navigation);
navigation.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
int id = menuItem.getItemId();
drawerLayout.closeDrawers();
switch (id){
case R.id.home:
//do something here
//open new activity
/*unable to start activity*/
//Intent intent = new Intent(this, NewActivity.class);
/* error on above line shown: Cannot resolve constructor 'Intent(anonymous android.support.design.widget.NavigationView.OnNavigationItemSelectedListener, java.lang.Class<com.test.app.activities.RouteActivity>)'*/
break;
case R.id.logout:
//add navigation drawer item onclick method here
break;

}
return false;
}
});

最佳答案

根据 Android Docs要开始您必须做的新 Activity :

1) 在你的类中添加这一行:

import android.content.Intent;

2) 向 list 添加新 Activity ,如下所示:

 <activity
android:name=".YourActivityName"
android:label="YourActivityName">
<intent-filter>
<action android:name="package.name.YOURACTIVITYNAME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>

3) 使用startActivity() 方法启动 Activity ,如下所示:

Intent newAct = new Intent(getApplicationContext(), YourActivityName.class);
startActivity(newAct);

3a) 如果您的类扩展Activity,您可以传递this 而不是getApplicationContext():

Intent newAct = new Intent(this, YourActivityName.class);
startActivity(newAct);

3b) 如果您的类扩展Fragment,您必须使用getActivity() 来传递上下文:

Intent newAct = new Intent(getActivity(), YourActivityName.class);
startActivity(newAct);

关于android - 如何在单击的 Material 抽屉导航菜单项上启动 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33064159/

24 4 0