我有 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
我的应用程序中有这个流程:
声明端点:
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) 我有一张结构如下的地图:
"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)
求和这些值的最佳方法是什么?
例如,我如何总结亚历克斯和约翰的所有这些年?
我已经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 上读到了一些关于这个问题的类似问题,但其中大多数都是非常旧/已弃用的方法
如何解决这个问题并处理触摸监听器和点击监听器?
当某些操作发生时,我想禁用芯片组。
目前我的代码是这样的:
R.id.all -> {
chipGroup.clearCheck()
chipGroup.isClickable = false
selectedCategory = null
}
Run Code Online (Sandbox Code Playgroud)
它确实清除了所有检查,但我仍然可以单击并选择筹码。
如何防止所有筹码被点击?
几个月前我玩过 git bash,我不知道如何不小心将我的名字设置为“Your-Name”(=/)。
现在,每次我对我的存储库进行更改时,都会显示“您的名字”提交了更改。
顺便说一句 - 如果我通过 android studio 创建一个存储库,它会显示为我的实际用户名创建了该存储库,但如果我提交任何更改并推送,它会显示为“您的名字”提交了更改。
我该如何解决这个问题并更改为我的实际 github 用户名?