我想在我的代码中的很多地方使用它,并且会有很多重复,但我在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)
作为最终的预期结果
编辑:我已经用工作代码回答了我的问题,我在阅读了所有答案后生成了
答案 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);