如何从另一个类调用活动的一种方法

时间:2018-11-14 07:19:46

标签: java android

这是我的活动课程的一部分,

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(); 

工作正常。任何帮助表示赞赏

2 个答案:

答案 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);