Я решил написать свой собственный класс Utility для Toast, чтобы вырезать повторяющийся код
public class Utilities {
public static void initializeToast(Context context, Toast toast, String res) {
cancelToast(toast);
toast = Toast.makeText(context, res, Toast.LENGTH_SHORT);
toast.show();
}
public static void cancelToast(Toast toast){
if (toast != null) {
toast.cancel();
}
}
}
Как видите, есть два метода.Я хочу избежать инициализации сложенных тостов, поэтому я отменяю старый тост перед новым.В моих клиентских классах я использую это так:
public class AddGroupActivity extends AppCompatActivity {
private EditText mEditWordView;
private Toast toast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_group);
mEditWordView = findViewById(R.id.editText);
final Button button = findViewById(R.id.add_group_button);
button.setOnClickListener(view -> {
if (TextUtils.isEmpty(mEditWordView.getText())) {
Utilities.initializeToast(this, toast, "Message Example");
}
});
}
}
Когда я нажимаю кнопку несколько раз, я получаю сложенные тосты - предыдущие тосты не уничтожаются.Поэтому мне нужна помощь, чтобы определить, почему он так себя ведет.
ОБНОВЛЕНИЕ Ранее я написал тост-код внутри класса деятельности, и он работал отлично.Например:
public class AddGroupActivity extends AppCompatActivity {
private EditText mEditWordView;
private Toast toast;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_add_group);
mEditWordView = findViewById(R.id.editText);
final Button button = findViewById(R.id.add_group_button);
button.setOnClickListener(view -> {
if (TextUtils.isEmpty(mEditWordView.getText())) {
initToast("Message");
}
});
}
private void cancelToast() {
if (toast != null) {
toast.cancel();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
cancelToast();
}
private void initToast(String res) {
cancelToast();
toast = Toast.makeText(this, res, Toast.LENGTH_SHORT);
toast.show();
}
}