перечисления должны быть безопасными по типу. Я думаю, что они не делали их неявно литыми, чтобы препятствовать другим видам использования. Хотя структура позволяет вам присваивать им постоянное значение, вы должны пересмотреть свои намерения. Если вы в основном используете перечисление для хранения постоянных значений, рассмотрите использование статического класса:
public static class ReturnValue
{
public const int Success = 0;
public const int FailReason1 = 1;
public const int FailReason2 = 2;
//Etc...
}
Это позволяет вам это сделать.
public static int main(string[] args){
return ReturnValue.Success;
}
EDIT
Когда вы do хотите указать значения для перечисления, это когда вы хотите их комбинировать. См. Приведенный ниже пример:
[Flags] // indicates bitwise operations occur on this enum
public enum DaysOfWeek : byte // byte type to limit size
{
Sunday = 1,
Monday = 2,
Tuesday = 4,
Wednesday = 8,
Thursday = 16,
Friday = 32,
Saturday = 64,
Weekend = Sunday | Saturday,
Weekdays = Monday | Tuesday | Wednesday | Thursday | Friday
}
Это перечисление затем может быть использовано с использованием побитовой математики. См. Пример ниже для некоторых приложений.
public static class DaysOfWeekEvaluator
{
public static bool IsWeekends(DaysOfWeek days)
{
return (days & DaysOfWeek.Weekend) == DaysOfWeek.Weekend;
}
public static bool IsAllWeekdays(DaysOfWeek days)
{
return (days & DaysOfWeek.Weekdays) == DaysOfWeek.Weekdays;
}
public static bool HasWeekdays(DaysOfWeek days)
{
return ((int) (days & DaysOfWeek.Weekdays)) > 0;
}
public static bool HasWeekendDays(DaysOfWeek days)
{
return ((int) (days & DaysOfWeek.Weekend)) > 0;
}
}
Picasso 2.0 позволяет вам добавить обратный вызов в запрос.
https://github.com/square/picasso
Обратный вызов, который вы используете, предназначен для «глобального» прослушивателя и помогает отлаживать ошибки, которые могут произойти из-за сети нагрузки.
Используйте load(url).into(view, new Callback() {...});
в Picasso 2.0.
Не забудьте вызвать cancelRequest(target)
, если вы используете Callback
.
Мой пример:
Picasso picasso = new Picasso.Builder(parent.getContext())
.listener(new Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
//Here your log
}
})
.build();
picasso.load(shopModel.getShopImg())
.fit()
.into(viewHolder.shopImg);
Вы можете попытаться добавить «глобального» слушателя.
// create Picasso.Builder object
Picasso.Builder picassoBuilder = new Picasso.Builder(this);
picassoBuilder.listener(new Picasso.Listener() {
@Override
public void onImageLoadFailed(Picasso picasso, Uri uri, Exception exception) {
Log.e("PICASSO", uri.toString(), exception);
}
});
// Picasso.Builder creates the Picasso object to do the actual requests
Picasso picasso = picassoBuilder.build();
try {
Picasso.setSingletonInstance(picasso);
} catch (IllegalStateException ignored) {
// Picasso instance was already set
// cannot set it after Picasso.with(Context) was already in use
}
Любые последующие вызовы Picasso.with(Context context)
будут возвращать экземпляр, подключенный к слушателю, поэтому все сбои будут записываться.
Обратите внимание, что вам нужно позвонить setSingletonInstance
как можно скорее, например, в заявке onCreate
.
P.S. Код принят здесь - Настройка Picasso с помощью Picasso.Builder
Когда мы получили ошибку, ошибка переходит к методу onError , тогда мы обрабатываем его!
private void getAvatar(){
Picasso.with(this)
.load(Links.GET_AVATAR + ".jpg")
.into(imgUserAvatar, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
imgUserAvatar.setImageResource(R.drawable.icon_profile_default);
}
});
}
Мой ответ:
File file = new File(filePath);
Picasso.with(context).load(file).placeholder(R.drawable.draw_detailed_view_display).error(R.drawable.draw_detailed_view_display)
.resize(400, 400).into(mImageView, new Callback() {
@Override
public void onSuccess() {
}
@Override
public void onError() {
mImageView.setVisibility(View.GONE);
}
});
Просто предложение, но вы можете избежать проблем в программировании, если создадите «пустой» png-файл и установите его в качестве файла изображения по умолчанию в папке res ... довольно глупо, я знаю ... но, вероятно, работать без борьба с ...