要避免静态视图引用,但允许不同的活动修改视图,可以使用回调函数或接口来实现。下面是一个示例解决方法:
public interface OnViewUpdateListener {
void onViewUpdated(View view);
}
public class MainActivity implements OnViewUpdateListener {
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
AnotherActivity.setViewUpdateListener(this);
}
@Override
public void onViewUpdated(View view) {
if (view instanceof TextView) {
textView.setText(((TextView) view).getText());
}
}
}
public class AnotherActivity {
private static OnViewUpdateListener viewUpdateListener;
public static void setViewUpdateListener(OnViewUpdateListener listener) {
viewUpdateListener = listener;
}
private void updateView() {
// 更新视图的逻辑
if (viewUpdateListener != null) {
viewUpdateListener.onViewUpdated(textView);
}
}
}
这样,当另一个活动调用updateView()
方法时,MainActivity
中的onViewUpdated()
方法会被触发,从而更新视图。这种方式可以避免静态视图引用,同时允许不同的活动修改视图。