gpt4 book ai didi

java - 将 Butterknife 与 BaseActivity/Child Activity 和 MaterialDrawer 结合使用

转载 作者:行者123 更新时间:2023-12-01 20:17:41 29 4
gpt4 key购买 nike

我在使用通过 BaseActivity 实现的多个 Activity (不使用 fragment )实现 MaterialDrawer(MikePenz 库)时遇到问题。另外,使用 ButterKnife 绑定(bind) View 。

在 SO 中找到相关问题并一一尝试,但就我而言,它不起作用,因为它们中的大多数使用带有 fragment 的标准抽屉导航,或者它们与 ButterKnife 无关。

代码:

MainActivity类

public class MainActivity extends AppCompatActivity {

@BindView(R.id.toolbar)
Toolbar toolbar;

private List<TestModel> destinations;
private DestinationAdapter mAdapter;
ProgressDialog progressDialog;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
setSupportActionBar(toolbar);
navManagement();
}
}

activity_main布局

<android.support.constraint.ConstraintLayout 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"
android:id="@+id/maincontainer"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.tvs.ui.MainActivity">

<android.support.design.widget.AppBarLayout
android:id="@+id/appbar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:theme="@style/AppTheme.AppBarOverlay"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
>

<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"
/>

</android.support.design.widget.AppBarLayout>

</android.support.constraint.ConstraintLayout>

商店 Activity

public class StoresActivity extends MainActivity {

@BindView(R.id.searchEditText)
EditText mSearchEditText; // errorRequired view 'searchEditText' with ID 2131558557 for field 'mSearchEditText' was not found
@BindView(R.id.storesRecyclerView)
RecyclerView recyclerView; // here too

private List<TestModel> stores;
private StoreAdapter mAdapter;

//endregion
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_stores);
ButterKnife.bind(this);

loadRecyclerView();
testData();

}
}

activity_store布局

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<EditText
android:id="@+id/searchEditText"
android:layout_width="0dp"
android:layout_height="wrap_content"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
/>

<android.support.v7.widget.RecyclerView
android:id="@+id/storesRecyclerView"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
android:scrollbars="vertical">

</android.support.v7.widget.RecyclerView>

</android.support.constraint.ConstraintLayout>

我知道错误原因是当 Layout 膨胀但继承的 Activity 中的 View 未膨胀时,会调用 MainActivity 中的 ButterKnife.Bind 。抽屉导航已加载,但在单击项目时,它会失败,原因很明显。我无法使用 FrameLayout,因为我使用的是 MaterialDrawer 库,它没有(或者我不知道)有要膨胀的 View 。

我尝试了几种广泛搜索的方法,例如 SO1 SO2 Git Git2 Link但没有成功。

非常感谢任何帮助。提前致谢。

最佳答案

感谢@mikepenz 的回复。

发布它,因为它可能对某人有帮助

通过在 BaseActivity 中创建抽象方法解决了该问题

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getLayoutResourceId());

ButterKnife.bind(this);
setSupportActionBar(toolbar);
navManagement();

}
protected abstract int getLayoutResourceId();

具体 Activity

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_stores); not required
ButterKnife.bind(this);

loadRecyclerView();
testData();

}

@Override
protected int getLayoutResourceId() {
return R.layout.activity_stores;
}

请注意,我没有在具体 Activity 中使用 ButterKnife.Bind,而是使用了 @Nullable 字段。但目前在基础 Activity 和实现 Activity 中都有绑定(bind)。

关于java - 将 Butterknife 与 BaseActivity/Child Activity 和 MaterialDrawer 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45490875/

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