【问题标题】:Create Toast by a static method通过静态方法创建 Toast
【发布时间】:2014-05-02 08:33:20
【问题描述】:

我在所有应用程序片段中都使用此代码,如果我使用静态方法应该会更好。我该怎么做?这个静态方法也应该适用于片段,而不仅仅是活动。

我的非静态 showToast 方法:

public void showToast(String msg){
    Toast.makeText(getActivity().getApplicationContext(), msg, Toast.LENGTH_SHORT).show();
}

通过使用这种静态方法解决了感谢@KishanDhamat

public static void showToast(Context context, String text) {
Toast.makeText(context, text, Toast.LENGTH_LONG).show();

}

【问题讨论】:

  • 如果您从静态方法调用它,您希望getActivity() 返回什么活动? (另请注意,遵循 Java 命名约定,这应该是 showToast。)
  • 但是那个方法不是静态的,我每次都在我的片段中调用它。顺便说一句,我已经编辑了主要问题
  • 查看我的编辑以获得答案。
  • 是的,谢谢就像魅力一样

标签: java android android-fragments


【解决方案1】:

使用这个:

public static void showToast(Context context, String text) {
    Toast.makeText(context, text, Toast.LENGTH_LONG).show();
}

现在调用这个方法你应该这样调用:

ClassName.showToast(context,"text");

这里的classname是包含静态方法的类。

【讨论】:

    【解决方案2】:
    • 更改方法的签名并添加给定的Context作为参数
    • 更改方法的签名使其成为static
    • Context 作为Toast.makeText 调用的第一个参数传递

    【讨论】:

      【解决方案3】:
      public static void changeActivity(Context context,Class that){
          context.startActivity(new Intent(context, that));
      } // my static method
      
        public void forgotPass(View view){
          Function.changeActivity(LoginActivity.this,ForgotPass.class);
      } // my activity i want to change
      

      这是我的解决方案,希望对你有帮助

      【讨论】:

        猜你喜欢
        • 2021-07-03
        • 2010-12-06
        • 2013-07-23
        • 2012-03-30
        • 2010-10-17
        • 2018-05-10
        • 1970-01-01
        • 2011-04-17
        • 2011-02-27
        相关资源
        最近更新 更多