2

我有一个带有 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) 视图一起使用?

4

0 回答 0