Android Studio 如何将活动传递给另一个类中的函数?

2w3kk1z5  于 2022-11-16  发布在  Android
关注(0)|答案(2)|浏览(302)

我正在为学校构建一个商店项目,我决定不复制和粘贴一个函数,该函数会提示每个Activity中没有Internet连接,而是将其添加到我的项目经理类ShopManager中,该类不是Activity。问题是,为了提示,其中一个参数是吐司应该发生的活动,我还没有找到一种方法来做到这一点。我决定现在我应该在添加任何互联网检查之前尝试toast,这就是我目前所创造的:
这是我的主页活动:

public class Home extends AppCompatActivity implements View.OnClickListener {

    ShopManager shopMng;
...
...
...
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);

        shopMng = new ShopManager();

        shopMng.toast(Home.this);
   }
}

在我的ShopManager类中:

public class ShopManager {

    public void toast(Class cls) {
        Toast.makeText(cls.this, "Test", Toast.LENGTH_SHORT).show();
    }

}

我得到的错误信息是“com.example.birthdayshop.ShopManager”中的吐司(java.lang.Class)“无法应用于”(com.example.birthdayshop.Shop)““,我推断这基本上意味着cls参数的类型不正确。它应该是什么类型的变量才能在所有活动中工作?提前非常感谢。

nhaq1z21

nhaq1z211#

要回答标题问题,我认为您必须将Intent传递给方法,这在您的情况下没有太大意义,例如:

Intent intent = new Intent(getApplicationContext(), Home.class);
shopMng.someMethod(intent);

要开始活动,您还需要一些背景信息,因此不应将其视为解决方案,但可以为其他人回答标题问题。
标准方法是传递上下文或Activity本身,因此要使程序正常工作,请尝试以下方法:

public class ShopManager {

    public void toast(Context context) {
        Toast.makeText(context, "Test", Toast.LENGTH_SHORT).show();
    }

}

或分别为:

public class ShopManager {

    public void toast(Home home) {
        Toast.makeText(home, "Test", Toast.LENGTH_SHORT).show();
    }

}

就是这样!Home Activity已经正确调用了ShopManager类中的吐司方法。祝你好运!

uurity8g

uurity8g2#

在ShopManager类中创建一个静态方法,用于获取上下文并显示吐司,如下所示:

public class ShopManager {
    static void toastMessage(Context context){
        Toast.makeText(context, "Test", Toast.LENGTH_SHORT).show();
    }
}

要从您的Activity调用它,请执行以下操作:

ShopManager.toastMessage(YourActivity.this);

相关问题