如何将其转换为方法/类,以便可以重用?

时间:2013-09-27 10:11:59

标签: java android

我想在我的代码中的很多地方使用它,并且会有很多重复,但我在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)

作为最终的预期结果

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

5 个答案:

答案 0 :(得分: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);

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

答案 1 :(得分:1)

如何制作一个静态方法,如:

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

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

请参阅此链接:Custom toast message in all screens?

希望这会让它更加清晰。 此致

答案 2 :(得分: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();
                }
            });

        }

答案 3 :(得分:1)

你可以简单地使用它:

1)首先制作一个名为 DisplayToast 的公共类。

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);

答案 4 :(得分: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);