繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM