我有两个活动.说Activity A和Activity 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
基本上,我有以下导航图:
我希望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
我试图通过android程序确定软导航栏.我找不到直接判断的方法.无论如何都有找到导航栏的可用性.
软导航栏图像在这里.

我将导航抽屉图标更改为自定义图标时遇到问题.我目前不得不实现标准的抽屉图标,顶部有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
我一直在制作一个应用程序,它在导航抽屉中使用回收站视图,但回收器视图的内容是如何显示的.视图肯定是他们,因为我可以看到滚动阴影.我不确定我是否做错了,因为应用程序在运行时不会崩溃.
导航抽屉片段:
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) 如何从" 材料设计"指南中启用"迷你变体" - 以便仅在其关闭状态下显示抽屉图标?

作为我的问题的简单测试项目,我采用了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
我使用导航库和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
我有一个案例,希望通过arch导航组件实现它.例如,我有2个导航图(主要和嵌套).我可以从嵌套中调用主图吗?如何? 例
android android-navigation android-architecture-components android-jetpack
我正在尝试从我的应用程序启动导航活动.我希望它从我的位置开始导航到我提供的点.我试过这种方式
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
谢谢!
对于新的应用程序,我使用Jetpack导航库来实现正确的后退导航.第一级导航是导航抽屉,如文档中所述,可以使用jetpack导航.但是ViewPager和TabLayout实现了另一个导航级别.由TabLayout切换的片段包含额外的线性导航层次结构.但是,在Jetpack Navigation中似乎不支持ViewPager/TabLayout.必须实现FragmentPagerAdapter,并在切换选项卡时结束托管后端堆栈.顶级导航与每个选项卡内的导航之间存在脱节.有没有办法让这个工作与Jetpack导航?
android android-navigation android-architecture-components android-jetpack android-architecture-navigation
android ×9
android-architecture-components ×2
android-architecture-navigation ×2
android-ui ×1
kotlin ×1