小编Scr*_*peW的帖子

如何使用嵌套的 navGraph 和底部导航视图进行导航

我有 3 个项目的底部导航视图,我navGraph看起来像这样:

<navigation 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"
app:startDestination="@id/nested_navigation"

<navigation
    android:id="@+id/nested_navigation"
    app:startDestination="@id/mainFragment" >
    <fragment
        android:id="@+id/mainFragment"
        android:name="com.example.app.ui.main.MainFragment"
        android:label="main_fragment"
        tools:layout="@layout/main_fragment" />
    <fragment
        android:id="@+id/list"
        android:name="com.example.app.ui.main.List"
        android:label="fragment_news_list"
        tools:layout="@layout/fragment_list" />
</navigation>

<fragment
    android:id="@+id/settings"
    android:name="com.example.app.ui.main.Settings"
    android:label="Settings" />
</navigation>
Run Code Online (Sandbox Code Playgroud)

带有嵌套 navGraph 片段的底部导航视图中的导航工作正常,但是如果我导航到settings_fragment嵌套 navGraph 之外的 ,并且我单击其他项目/片段我无法导航到其他片段,我基本上卡住在这个屏幕上。

我检查了发生了什么是如果我把settings_fragment嵌套的 navGraph放在里面,它的效果很好。

我该如何解决这个问题?

顺便说一句 - 我很确定它不相关,但设置片段是PreferenceScreen位于 XML 资源中的布局,而不是布局资源

我的菜单项:

<item
    android:id="@+id/mainFragment"
    android:icon="@drawable/ic_home_black_24dp"
    android:title="@string/home"
    app:showAsAction="ifRoom"
    />
<item
    android:id="@+id/list"
    android:icon="@drawable/ic_format_list_bulleted_black_24dp"
    android:title="@string/news_list"
    app:showAsAction="ifRoom"
    />
<item
    android:id="@+id/settings"
    android:icon="@drawable/ic_settings_black_24dp"
    android:title="@string/settings"
    app:showAsAction="ifRoom"
    />
Run Code Online (Sandbox Code Playgroud)

android kotlin android-navigation bottomnavigationview android-jetpack-navigation

10
推荐指数
1
解决办法
1795
查看次数

有api调用时如何在没有代码重复的情况下膨胀progressBar布局

我的应用程序中有这个流程:

声明端点:

public interface EndPoints {
    @GET(Constants.POPULAR)
    Call<AllData> getAllData(
            @Query("api_key") String apiKey
    );
}
Run Code Online (Sandbox Code Playgroud)

改造服务:

  private static EndPoints endPoints = retrofit.create(EndPoints.class);

    public static EndPoints getEndpoints() {
        return  endPoints ;
    }
Run Code Online (Sandbox Code Playgroud)

我在我的视图模型中调用它:

   private void getDataFromApi() {
    Call<AllData> call = RetrofitService.getEndPoints().getAllData(Constants.API_KEY);
    call.enqueue(new Callback<AllData>() {
        @Override
        public void onResponse(Call<AllData> call, Response<AllData> response) {

        }
            if (response.isSuccessful()) {
                _allData.setValue(response.body());
        }

        @Override
        public void onFailure(Call<AllData> call, Throwable t) {
        }
    });

}
Run Code Online (Sandbox Code Playgroud)

基础活动:

public abstract class BaseActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) …
Run Code Online (Sandbox Code Playgroud)

java android mvvm android-progressbar retrofit2

7
推荐指数
1
解决办法
569
查看次数

kotlin 中的求和映射值

我有一张结构如下的地图:

"Alex": [Work(workPlace="workPlace", years=1),
        Work(workPlace="workPlace", years=4),
        Work(workPlace="workPlace", years=5),
        Work(workPlace="workPlace", years=1)],

"John": [Work(workPlace="workPlace", years=2),
        Work(workPlace="workPlace", years=2),
        Work(workPlace="workPlace", years=1),
        Work(workPlace="workPlace", years=6)]
Run Code Online (Sandbox Code Playgroud)

求和这些值的最佳方法是什么?

例如,我如何总结亚历克斯和约翰的所有这些年?

kotlin

6
推荐指数
1
解决办法
6422
查看次数

如何同时处理 OnTouchListener 事件和 OnClickListener 事件

我已经RecyclerView设置了每个项目OnTouchListener并且OnClickListener

OnTouch监听器:

override fun onBindViewHolder(holder: ItemListViewHolder, position: Int) {
    val item = getItem(position)
    holder.bind(item)
    holder.itemView.cardview.setOnTouchListener { v, event ->
        if (event.action == MotionEvent.ACTION_DOWN) {
            Log.d(TAG, "onBindViewHolder: $event.buttonState")
            this.startDragListener.onStartDrag(holder)
        }
        return@setOnTouchListener true
    }
}
Run Code Online (Sandbox Code Playgroud)

OnClickListener:(在视图持有者内部)

 init {
    itemView.setOnClickListener(this)
}

 override fun onClick(v: View?) {
        onItemClickListener.onItemClick(adapterPosition)
    }
Run Code Online (Sandbox Code Playgroud)

问题是当我单击该项目时,仅startDragListener触发,但单击事件从未触发。

我在 stackoverflow 上读到了一些关于这个问题的类似问题,但其中大多数都是非常旧/已弃用的方法

如何解决这个问题并处理触摸监听器和点击监听器?

android listener kotlin android-recyclerview

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

如何在android中禁用芯片

当某些操作发生时,我想禁用芯片组。

目前我的代码是这样的:

           R.id.all -> {
                    chipGroup.clearCheck()
                    chipGroup.isClickable = false
                    selectedCategory = null
                } 
Run Code Online (Sandbox Code Playgroud)

它确实清除了所有检查,但我仍然可以单击并选择筹码。

如何防止所有筹码被点击?

android android-layout kotlin

3
推荐指数
1
解决办法
986
查看次数

更改 git 用户名

几个月前我玩过 git bash,我不知道如何不小心将我的名字设置为“Your-Name”(=/)。

现在,每次我对我的存储库进行更改时,都会显示“您的名字”提交了更改。

顺便说一句 - 如果我通过 android studio 创建一个存储库,它会显示为我的实际用户名创建了该存储库,但如果我提交任何更改并推送,它会显示为“您的名字”提交了更改。

我该如何解决这个问题并更改为我的实际 github 用户名?

git github git-bash android-studio

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