0

我想在我的代码中的很多地方使用它,并且会有很多重复,但是我在 java 方面的知识不足以完成这项工作。

        Toast myToast = Toast.makeText(net.asdqwe.activities.Signup.this, configurationz.ERROR_MESSAGES_SIGNUP_USER_NAME_MIN_LENGTH_PROBLEM, Toast.LENGTH_SHORT);
        myToast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL, 0, 0);
        TextView tv = (TextView) myToast.getView().findViewById(android.R.id.message);
        tv.setTextColor(Color.parseColor(configurationz.COLORS_TOAST_TEXT_COLOR));
        tv.setTextSize(20);
        myToast.getView().setBackgroundColor(Color.parseColor(configurationz.COLORS_TOAST_BACKGROUND));
        myToast.show();

我希望能够以这种方式使用它:

ToastMaker(short duration (//or long), configurationz.ERROR_MESSAGE (//of my choice), configurationz.COLORS_TOAST_TEXT_COLOR(//or some other variable), configurationz.COLORS_TOAST_BACKGROUND_COLOR(//or some other variable), 30(//text size), gravity)

something like this
ToastMaker(length, errorMessage, textColor, backgroundColor, textSize, gravity)

我最关心的一件事是下面的代码会为每个类改变,我不知道如何动态获取

net.asdqwe.activities.Signup.this

实际上,我可以将文本颜色、大小和背景设置为整个应用程序的通用设置(这很有意义),所以我们只剩下这个:

ToastMaker(length, errorMessage, gravity)

作为最终期望的结果

编辑:我已经用工作代码回答了我的问题,这是我在阅读所有答案后生成的

4

5 回答 5

1

你可以简单地使用这个:

1) 首先创建一个名为DisplayToast的 Common 类。

and in this class make method like 


public void showToast(Context context){

 Toast myToast = Toast.makeText(context, configurationz.ERROR_MESSAGES_SIGNUP_USER_NAME_MIN_LENGTH_PROBLEM, Toast.LENGTH_SHORT);
 myToast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL, 0, 0);
 TextView tv = (TextView) myToast.getView().findViewById(android.R.id.message);
 tv.setTextColor(Color.parseColor(configurationz.COLORS_TOAST_TEXT_COLOR));
 tv.setTextSize(20);
myToast.getView().setBackgroundColor(Color.parseColor(configurationz.COLORS_TOAST_BACKGROUND));
 myToast.show();
}

现在,每当您想在任何类中访问此方法时,您都应该制作此类的对象,例如:

 DisplayToast dt = new DisplayToast();

现在调用该方法

 dt.showToast(context);

2)您还可以为此制作静态方法:

 public static void showToast(Context context){

 Toast myToast = Toast.makeText(context, configurationz.ERROR_MESSAGES_SIGNUP_USER_NAME_MIN_LENGTH_PROBLEM, Toast.LENGTH_SHORT);
 myToast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL, 0, 0);
 TextView tv = (TextView) myToast.getView().findViewById(android.R.id.message);
 tv.setTextColor(Color.parseColor(configurationz.COLORS_TOAST_TEXT_COLOR));
 tv.setTextSize(20);
myToast.getView().setBackgroundColor(Color.parseColor(configurationz.COLORS_TOAST_BACKGROUND));
 myToast.show();
}

你可以在你的课堂上使用它,比如

 DisplayToast.showToast(context);
于 2013-09-27T10:33:33.077 回答
1

如果想在 saperet 类中声明它

class YourClass{

  public void showToast(Context context){

    Toast myToast = Toast.makeText(context, configurationz.ERROR_MESSAGES_SIGNUP_USER_NAME_MIN_LENGTH_PROBLEM, Toast.LENGTH_SHORT);
    myToast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL, 0, 0);
    TextView tv = (TextView) myToast.getView().findViewById(android.R.id.message);
    tv.setTextColor(Color.parseColor(configurationz.COLORS_TOAST_TEXT_COLOR));
    tv.setTextSize(20);
    myToast.getView().setBackgroundColor(Color.parseColor(configurationz.COLORS_TOAST_BACKGROUND));
    myToast.show();
  }
}

像这样在其他类中使用

YourClass myClass=new YourClass();
myClass.showToast(mContext);

您还可以通过上下文传递其他参数(例如消息)。

于 2013-09-27T10:26:28.763 回答
1

如何制作一种静态方法,例如:

public static void ToastMaker(length, errorMessage, textColor, backgroundColor, textSize, gravity) 

虽然需要添加上下文作为参数。只需将您的代码放在该方法中即可。您甚至可以使用自定义布局

请参阅此链接:所有屏幕中的自定义 toast 消息?

希望这能让它更清楚一点。问候

于 2013-09-27T10:27:33.443 回答
1

这样做

我放入了 runOnUi() 方法,因此您可以从 Asynctask/后台线程调用它

很长时间

 public void tong(Context mContext, final String msg) {
            ((Activity)mContext).runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    Toast myToast = Toast.makeText(mContext, msg, Toast.LENGTH_LONG);
                    myToast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL, 0, 0);
                    TextView tv = (TextView) myToast.getView().findViewById(android.R.id.message);
                    tv.setTextColor(Color.parseColor(configurationz.COLORS_TOAST_TEXT_COLOR));
                    tv.setTextSize(20);
                    myToast.getView().setBackgroundColor(Color.parseColor(configurationz.COLORS_TOAST_BACKGROUND));
                    myToast.show();
                }
            });
        }

短时间内

public void ting(final Context mContext, final String msg) {

            ((Activity)mContext).runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    Toast myToast = Toast.makeText(mContext, msg, Toast.LENGTH_SHORT);
                    myToast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL, 0, 0);
                    TextView tv = (TextView) myToast.getView().findViewById(android.R.id.message);
                    tv.setTextColor(Color.parseColor(configurationz.COLORS_TOAST_TEXT_COLOR));
                    tv.setTextSize(20);
                    myToast.getView().setBackgroundColor(Color.parseColor(configurationz.COLORS_TOAST_BACKGROUND));
                    myToast.show();
                }
            });

        }
于 2013-09-27T10:29:20.073 回答
0

谢谢大家,感谢您的帮助,这是我创建的,并且效果很好:

public class ToastMaker extends Activity {

    public void toast(Context context, final String message, Configurationz configurationz, int duration) {

                Toast myToast = Toast.makeText(context, message , duration);
                myToast.setGravity(Gravity.CENTER_HORIZONTAL | Gravity.CENTER_VERTICAL, 0, 0);
                TextView tv = (TextView) myToast.getView().findViewById(android.R.id.message);
                tv.setTextColor(Color.parseColor(configurationz.COLORS_TOAST_TEXT_COLOR));
                tv.setTextSize(configurationz.TOAST_TEXT_SIZE);
                myToast.getView().setBackgroundColor(Color.parseColor(configurationz.COLORS_TOAST_BACKGROUND));
                myToast.show();
    }
}

我这样使用它:

ToastMaker toastMaker = new ToastMaker();

toastMaker.toast(net.asdqwe.activities.Signup.this, configurationz.ERROR_MESSAGES_SIGNUP_USER_NAME_MIN_LENGTH_PROBLEM, configurationz, Toast.LENGTH_SHORT);
于 2013-09-27T11:25:10.200 回答