gpt4 book ai didi

android-fragments - 如何在 Java 项目中使用 NavigationExtensions.kt?

转载 作者:行者123 更新时间:2023-12-04 12:17:02 25 4
gpt4 key购买 nike

我正在尝试在一个新项目中使用底部导航实现 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com