我正在为学校构建一个商店项目,我决定不复制和粘贴一个函数,该函数会提示每个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参数的类型不正确。它应该是什么类型的变量才能在所有活动中工作?提前非常感谢。
2条答案
按热度按时间nhaq1z211#
要回答标题问题,我认为您必须将Intent传递给方法,这在您的情况下没有太大意义,例如:
要开始活动,您还需要一些背景信息,因此不应将其视为解决方案,但可以为其他人回答标题问题。
标准方法是传递上下文或Activity本身,因此要使程序正常工作,请尝试以下方法:
或分别为:
就是这样!Home Activity已经正确调用了ShopManager类中的吐司方法。祝你好运!
uurity8g2#
在ShopManager类中创建一个静态方法,用于获取上下文并显示吐司,如下所示:
要从您的Activity调用它,请执行以下操作: