作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在一个新项目中使用底部导航实现 NavController。这是我的第一次尝试,到处都有很多关于此的模棱两可的信息。
所以我的问题涉及每个底部选项卡都有自己的返回堆栈并在底部导航点击之间保留片段。是的,我看过https://github.com/android/architecture-components-samples/tree/master/NavigationAdvancedSample我无法理解如何将它与我现有的 Java 代码集成,因为示例在 Kotlin 中。
谁能帮我这个?
最佳答案
好的,经过数小时的尝试,我所做的是使用示例 Kotlin 项目,然后将我的 Java 类、资源和 Assets 导入到该项目中。为了更改mainactivity.kt,我反编译了它并得到以下文件。这仍然是基本的工作,但至少我已经有了框架,希望可以节省一些人的头疼时间......
package com.example.android.navigationadvancedsample;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.Observer;
import androidx.navigation.NavController;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import org.jetbrains.annotations.Nullable;
import java.util.List;
import kotlin.collections.CollectionsKt;
public class MainActivity extends AppCompatActivity {
private LiveData currentNavController;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate( savedInstanceState );
getSupportActionBar().hide();
setContentView( R.layout.activity_main );
if (savedInstanceState == null) {
this.setupBottomNavigationBar();
}
}
protected void onRestoreInstanceState(@Nullable Bundle savedInstanceState) {
super.onRestoreInstanceState( savedInstanceState );
this.setupBottomNavigationBar();
}
void setupBottomNavigationBar() {
BottomNavigationView bottomNavigationView = this.findViewById( R.id.bottom_nav );
List navGraphIds = CollectionsKt.listOf( new Integer[]{R.navigation.home, R.navigation.list, R.navigation.form} );
LiveData controller = NavigationExtensionsKt.setupWithNavController( bottomNavigationView, navGraphIds, getSupportFragmentManager(), R.id.nav_host_container, getIntent() );
controller.observe( this, (Observer) (new Observer() {
// $FF: synthetic method
// $FF: bridge method
public void onChanged(Object var1) {
//this.onChanged((NavController)var1);
}
}) );
this.currentNavController = controller;
}
public boolean onSupportNavigateUp() {
LiveData var10000 = this.currentNavController;
boolean var2;
if (var10000 != null) {
NavController var1 = (NavController)var10000.getValue();
if (var1 != null) {
var2 = var1.navigateUp();
return var2;
}
}
var2 = false;
return var2;
}
}
关于android-fragments - 如何在 Java 项目中使用 NavigationExtensions.kt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59251349/
我正在尝试在一个新项目中使用底部导航实现 NavController。这是我的第一次尝试,到处都有很多关于此的模棱两可的信息。 所以我的问题涉及每个底部选项卡都有自己的返回堆栈并在底部导航点击之间保留
我是一名优秀的程序员,十分优秀!