标签: android-navigation

当从操作栏"向上"时,如何恢复活动而不是重新启动

我有两个活动.说Activity AActivity B.
Activity A我单击按钮启动Activity B这是我用于此的代码:

Intent intent = new Intent(this, ActivityB.class);
this.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)


现在,在这一点上,我在Activity B.在on create方法中Activity B,我启用了向上按钮.

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_news);

    getActionBar().setDisplayHomeAsUpEnabled(true); //Here//
}
Run Code Online (Sandbox Code Playgroud)

并在"向上"按钮的事件句柄上,我有这个代码:

public boolean onOptionsItemSelected(MenuItem item){
     switch (item.getItemId()) {
        case android.R.id.home:
            finish();
            NavUtils.navigateUpFromSameTask(this);
        default:
            return super.onOptionsItemSelected(item);
    }
}
Run Code Online (Sandbox Code Playgroud)


现在我决定回到Activity A单击操作栏中的向上按钮,如下所示:在此输入图像描述

现在问题是,当我点击"向上按钮"时,它返回到Activity A哪个很好,但它重新启动它.怎么能让它停止重启?我只想让它恢复.

当我使用我的硬件后退按钮时,它按预期工作.即它转到Activity A并恢复它而不是重新启动它.

我希望我的活动恢复,因为在那个活动上,我在网上下载了一些字符串,因此我不希望它在用户从活动B开始时继续下载数据- >活动A


编辑 …

android android-actionbar android-navigation

39
推荐指数
1
解决办法
1万
查看次数

如何以编程方式更改导航图的起始目标[Jetpack]

基本上,我有以下导航图:

在此输入图像描述

我希望fragment 2在到达之后将导航图中的起点更改为正确(为了防止fragment 1在按下后退按钮时返回 - 就像启动画面一样).

这是我的代码:

navGraph = navController.getGraph();
navGraph.setStartDestination(R.id.fragment2);
navController.setGraph(navGraph);
Run Code Online (Sandbox Code Playgroud)

但是,显然它不起作用,fragment 1按下后退按钮后又回来了.

我做错了吗?还有其他解决方案吗?

android android-navigation android-jetpack android-architecture-navigation

30
推荐指数
5
解决办法
1万
查看次数

在Android设备中逐步检测软导航栏的可用性?

我试图通过android程序确定软导航栏.我找不到直接判断的方法.无论如何都有找到导航栏的可用性.

软导航栏图像在这里.

在此输入图像描述

android android-ui android-layout android-navigation

29
推荐指数
4
解决办法
2万
查看次数

更改导航抽屉的图标

我将导航抽屉图标更改为自定义图标时遇到问题.我目前不得不实现标准的抽屉图标,顶部有3条水平线,但现在我想用我的自定义抽屉图标替换它.

这就是我mDrawerToggle现在的样子:

mDrawerToggle=new ActionBarDrawerToggle(this,
    mDrawerLayout,
    R.drawable.app_icon,
    R.string.drawer_open) {
        // My code
    };
Run Code Online (Sandbox Code Playgroud)

android android-actionbar android-drawable android-navigation android-actionbaractivity

27
推荐指数
3
解决办法
7万
查看次数

没有显示的Recycler视图

我一直在制作一个应用程序,它在导航抽屉中使用回收站视图,但回收器视图的内容是如何显示的.视图肯定是他们,因为我可以看到滚动阴影.我不确定我是否做错了,因为应用程序在运行时不会崩溃.

导航抽屉片段:

public class NavigationDrawerFragment extends android.support.v4.app.Fragment {

    public static final String PREF_FILE_NAME = "testPref";
    public static final String KEY_USER_LEARNED_DRAWER = "user_learned_drawer";
    private RecyclerView mRecyclerView;
    private ActionBarDrawerToggle mDrawerToggle;
    private DrawerLayout mDrawerLayout;
    private View containerView;
    private Boolean mUserLearnedDrawer;
    private Boolean mFromSavedInstanceState;
    private DrawerAdapter adapter;

    public NavigationDrawerFragment() {
        mFromSavedInstanceState = false;
    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mUserLearnedDrawer = Boolean.valueOf(readFromPreferences(getActivity(), KEY_USER_LEARNED_DRAWER, "false"));
        if (savedInstanceState != null){
            mFromSavedInstanceState = true;
        }
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) …
Run Code Online (Sandbox Code Playgroud)

android android-fragments android-navigation

24
推荐指数
4
解决办法
3万
查看次数

如何从android.support.v4.widget.DrawerLayout的Material Design guide启用或伪造迷你变体?

如何从" 材料设计"指南中启用"迷你变体" - 以便仅在其关闭状态下显示抽屉图标?

迷你变种

作为我的问题的简单测试项目,我采用了Google着名的导航抽屉示例 - 然后在右侧添加了第二个抽屉,并在两侧添加了ListView条目的图标:

截图

截图

请告知如何激活(或者假冒?)"迷你变体抽屉" - 以便在上面的屏幕截图的右侧只能看到音乐符号.

这是我的布局文件activity_main.xml:

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout 
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.v7.widget.Toolbar 
            xmlns:android="http://schemas.android.com/apk/res/android"
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

        <ImageView 
            android:src="@drawable/ic_music_note_black_24dp"
            android:onClick="openActions"
            android:layout_gravity="right"
            android:padding="16dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />

        </android.support.v7.widget.Toolbar>

        <FrameLayout
            android:id="@+id/content_frame"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    </LinearLayout>

    <ListView
        android:id="@+id/left_drawer"
        android:layout_width="240dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:choiceMode="singleChoice" />

    <ListView
        android:id="@+id/right_drawer"
        android:layout_width="160dp"
        android:layout_height="match_parent"
        android:layout_gravity="end"
        android:choiceMode="singleChoice" />

</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)

MainActivity.java使用它:

public class MainActivity extends AppCompatActivity {
    private Toolbar mToolbar;
    private DrawerLayout mDrawerLayout;
    private ListView …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-navigation material-design android-drawer

24
推荐指数
1
解决办法
4578
查看次数

Safeargs库不会生成方向类

我使用导航库和safeargs来传递数据.我像这样定义片段的参数.

<fragment
        android:id="@+id/otherFragment"
        android:name="com.asd.navigate.OtherFragment"
        android:label="OtherFragment">
        <argument
            android:name="screenTitle"
            android:defaultValue="0"
            app:type="string" />
    </fragment>
Run Code Online (Sandbox Code Playgroud)

生成的OtherFragmentArgs,我可以使用它但是当我单击"make project"时,OtherFragmentDirection类不生成.是那个错误还是我必须做一些与众不同的事情.

Thnx的建议.

buildscript {
    ...
    dependencies {
       ...
        classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha01"

    }
}
Run Code Online (Sandbox Code Playgroud)

的build.gradle

apply plugin: "androidx.navigation.safeargs"
Run Code Online (Sandbox Code Playgroud)

MainActivity.kt

在此输入图像描述

kotlin android-navigation android-jetpack

24
推荐指数
11
解决办法
3304
查看次数

来自arch的新导航组件,带有嵌套导航图

我有一个案例,希望通过arch导航组件实现它.例如,我有2个导航图(主要和嵌套).我可以从嵌套中调用主图吗?如何?

android android-navigation android-architecture-components android-jetpack

24
推荐指数
3
解决办法
8506
查看次数

可以使用地图和waze的导航意图

我正在尝试从我的应用程序启动导航活动.我希望它从我的位置开始导航到我提供的点.我试过这种方式

String uri = "geo: "+String.valueOf(latitude) + "," + String.valueOf(longitude);
context.startActivity(new Intent(android.content.Intent.ACTION_VIEW,
                            Uri.parse(uri)));
Run Code Online (Sandbox Code Playgroud)

当我选择导航时它很好用Waze(它立即从"开始导航"对话框开始),但不起作用maps(仅显示点,而不是导航选项)

如果我使用这种方式

Intent intent = 
            new Intent(Intent.ACTION_VIEW,
                    Uri.parse("http://maps.google.com/maps?"  + 
                            "&daddr=" + String.valueOf(latitude) + "," 
                             + String.valueOf(longitude)));
context.startActivity(intent);
Run Code Online (Sandbox Code Playgroud)

它的反面,开始导航,maps只显示点Waze

谢谢!

android android-intent android-navigation

21
推荐指数
2
解决办法
1万
查看次数

使用ViewPager和TabLayout的Android Jetpack导航

对于新的应用程序,我使用Jetpack导航库来实现正确的后退导航.第一级导航是导航抽屉,如文档中所述,可以使用jetpack导航.但是ViewPager和TabLayout实现了另一个导航级别.由TabLayout切换的片段包含额外的线性导航层次结构.但是,在Jetpack Navigation中似乎不支持ViewPager/TabLayout.必须实现FragmentPagerAdapter,并在切换选项卡时结束托管后端堆栈.顶级导航与每个选项卡内的导航之间存在脱节.有没有办法让这个工作与Jetpack导航?

android android-navigation android-architecture-components android-jetpack android-architecture-navigation

19
推荐指数
2
解决办法
4454
查看次数