我有一个带有 2 个模块的 Android 项目。我在两个模块中都有 MainActivity:
- com.example.MainActivity
- com.example.paid.PaidMainActivity
两个模块都有 res/layout/main.xml 并且它们有点不同。
免费版:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
付费版:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/paidView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
PaidMainActivity 扩展 MainActivity 并在父活动中使用 setContentView 设置布局。目前 90% 的功能是相同的,并且是在 MainActivity 中完成的。
public class MainActivity {
TextView text1;
TextView paidView;
public void onCreate() {
text1 = findViewById(R.id.text1);
paidView = findViewById(R.id.paidView);
}
public void onResume() {
text1.setText("This is just a text");
if (paidView != null) {
paidView.setText("All features unlocked");
}
}
}
ViewBinding 生成两个 MainBinding java 类,我可以在任一类中使用它们,但我必须重构大量代码(此示例过于简单)。我在两个活动中也会有重复的代码,因为我不能使用相同的绑定对象并覆盖某些功能。有没有办法可以将视图绑定和合并的 xml 文件与所有 (@Nullable) 视图一起使用?