我在调用MainActivity
非活动类中的MSG0100
类中调用方法更新时遇到麻烦
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void update(boolean msg100Preselection){
if(msg100Preselection){
mExpandableListViewAdapter.setSelectedChild(-1);
mExpandableListViewAdapter.notifyDataSetChanged();
}
}
}
这是我的班级,我想调用Mainactivity
的更新方法。
public class MSG0100{
boolean msg100Preselection=false;
pulic void onUpdate(){
msg100Preselection=true;
// Want to call my update method here
MainActivity activity= new MainActivity();
activity.update(msg100Preselection); //<-------- Using mainactiviy object crashes my app.
}
}
答案 0 :(得分:1)
您想要的东西是不可能的,因为您没有指向主要活动的指针。
以下语句无效。
MainActivity activity= new MainActivity();
不允许使用new
运算符创建活动。这应该使用意图来完成。
答案 1 :(得分:0)
您可以执行以下几项操作:
OR
将您的更新方法声明为static
并像这样使用它:
MainActivity.update(msg100Preselection)
;
答案 2 :(得分:0)
尝试使用callbackListener:- 在您的MSG0100课堂中
public class MSG0100 {
boolean msg100Preselection = false;
private static OnUpdateListener mListener;
public static setListener(OnUpdateListener mListener) {
this.mListener = mListener;
}
public void onUpdate() {
msg100Preselection = true;
if (mListener != null)
mListener.onUpdate(msg100Preselection);
}
public interface OnUpdateListener()
{
void onUpdate ( boolean msg100Preselection);
}
}
在您的MainActivity中-
public class MainActivity extends AppCompatActivity, OnUpdateListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MSG0100.setListener(this)
}
@Override
public void onUpdate(boolean msg100Preselection) {
if (msg100Preselection) {
mExpandableListViewAdapter.setSelectedChild(-1);
mExpandableListViewAdapter.notifyDataSetChanged();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
MSG0100.setListener(null)
}
}
这样,您就不会因为Activity被杀死而导致任何内存泄漏或崩溃。