[英]How do I call one method of an activity from another class
这是我的活动课的一部分,
public class StatusActivity extends AppCompatActivity {
private boolean cFlag = false;
public boolean getFlag() { return cFlag; }
public void setFlag(boolean cFlag) {
this.cFlag = cFlag;
}
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.list);
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,
android.R.id.text1, messages);
ListView listView = findViewById(android.R.id.list);
listView.setAdapter(adapter);
adapters.add(adapter);
Button btn = findViewById(R.id.btnCustomerCheckIn);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setFlag(true);
cFlag = getFlag();
Intent intent = new Intent(StatusActivity.this, MainActivity.class);
Toast.makeText(StatusActivity.this, "customer checked in",
Toast.LENGTH_LONG).show();
startActivity(intent);
}
});
}
这是另一个名为position的类的一部分
public class Position {
StatusActivity statusactivity = new StatusActivity();
public boolean ccflag = statusactivity.getFlag();
statusactivity.setFlag(false);
}
当我打电话时
statusactivity.setFlag(false);
它显示一个错误。 无法识别出我得到的错误是什么。 但
statusactivity.getFlag();
工作正常。 任何帮助表示赞赏
StatusActivity statusactivity = new StatusActivity();
这是完全错误的,因为您正在尝试创建新的活动实例。 如果要从其他活动中使用“ setFlag”方法,则必须在StatusActivity内创建一个静态方法,以便可以直接使用StatusActivity进行访问。
并且,如果要从此活动的任何片段中调用,请通过将“ getActivity()”强制转换为StatusActivity来获取此活动的实例,并将该实例用于调用“ setFlag”或“ getFlag”方法。
您可以在“活动”中像下面那样实现。
private static boolean cFlag = false;
public static boolean getFlag() {
return cFlag;
}
public static void setFlag(boolean cFlag) {
StatusActivity.cFlag = cFlag;
}
并从如下所示的位置类进行调用
public class Position {
public boolean ccflag = StatusActivity.getFlag();
StatusActivity.setFlag(false);
}
您无法实例化Activity类。 如果要从活动中调用方法,首先应检查活动是否已在运行并且未销毁,然后通过将类的上下文按如下所示进行转换,然后使用其方法
StatusActivity statusactivity= (StatusActivity )context;
statusactivity.setFlag(false);
问题未解决?试试以下方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.