【发布时间】:2020-08-11 14:45:42
【问题描述】:
我的应用中只有一项活动。在我将视图和对话框静态存储在活动中之前,我可以从任何地方访问它们。但我知道这是不好的做法,因为它会导致内存泄漏。
所以我将它们设置为非静态的,但现在我需要在视图层次结构的深处引用我的活动,以访问存储在活动中的视图和对话框。
示例:
我的 MainActivity 有一个名为 a 的对话框和一个名为 b 的自定义视图。 b的onClick方法如何显示对话框a?
或在代码中:
public class MainActivity extends Activity {
private CustomDialog a;
private CustomView b;
@Override
protected void onCreate(Bundle savedInstanceState) {
a = new CustomDialog(this);
b = new CustomView(this);
}
}
public class CustomView extends Button implements OnClickListener {
public CustomView(Context context) {
super(context);
setOnClickListener(this);
}
@Override
public void onClick(View view) {
//wants to show dialog a
MainActivity.a.show(); //Not possible -> a is not static
mainActivity.a.show(); //<-- needs a reference of the activity
// but where from?
}
}
MainActivity mainActivity = (MainActivity) getContext(); 不起作用,因为 getContext() 并不总是活动上下文。
更新:
我在下面发布了答案! 由于某些原因,StackOverflow 只让我在两天内接受自己的答案
【问题讨论】:
标签: android android-activity sharedpreferences android-view android-context