这是我的活动课程的一部分,
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();
工作正常。任何帮助表示赞赏
答案 0 :(得分:0)
StatusActivity statusactivity = new StatusActivity();
这是完全错误的,因为您正在尝试创建新的活动实例。 如果要在其他活动中使用“ setFlag”方法,则必须在StatusActivity内创建一个静态方法,以便可以直接使用StatusActivity进行访问。
如果您要从该活动的任何片段中调用,请通过将“ getActivity()”强制转换为StatusActivity来获取该活动的实例,并将该实例用于调用“ setFlag”或“ getFlag”方法。 / p>
您可以在“活动”中像下面那样实现。
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);
}
答案 1 :(得分:0)
您无法实例化Activity类。如果要从活动中调用方法,首先应检查活动是否已运行且未销毁,然后通过将类的上下文按如下所示进行强制转换,然后使用其方法
StatusActivity statusactivity= (StatusActivity )context;
statusactivity.setFlag(false);