+-

我从基本活动和基本片段继承了我所有的活动和片段.
我想在整个应用程序中集中一些行为,并为它们创建一些单独的git存储库.
约定是,每个活动和片段都应具有一个主ProgressBar,该主Bar嵌入在XML布局内的任何位置,并且其id只是进度.
问题在于ProgressBar类是在另一个git存储库中定义的,而实际的XML是在其他git存储库中定义的.因此,我无法在代码中访问R.id.progress.
在我的BaseActivity中,我有以下代码:
public class BaseActivity extends AppCompatActivity {
ProgressBar progress;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
progress = findViewById(R.id.progress); // this line is red
} catch (Exception ex) {
// notifying error
}
}
public void showProgress() {
// showing progress
}
public void hideProgress() {
// hiding
}
}
这样,在我所有的活动中,我只需调用showProgress();即可.每当我需要时.
我应该如何解决这个问题?
最佳答案
如果您的BaseActivity驻留在基本模块内(让我们称之为BaseActivity Module),而实际的活动和xml在另一个模块内部(让我们称之为Activity Module),那么这取决于像下面这样的BaseActivity模块:
Activity Module
-- BaseActivity module
然后,您可以在BaseActivity中创建一个包含R.id.progress的xml文件作为临时ID.
当您使用BaseActivity创建一个子类时,该子类活动的XML包含R.id.progress.您的活动将使用xml中的R.id.progress而不是BaseActivity.
请注意,可以通过添加具有相同名称的xml覆盖具有特定名称的每个xml.例如,如果您在BaseActivity模块中具有view_progress.xml,它将被Activity模块中的view_progress.xml覆盖.
点击查看更多相关文章
转载注明原文:java-如何在Android Studio中常规使用R.id? - 乐贴网