В погодном приложении выдает ошибку NullPointerException на строчке: mWeatherLayout.setVisibility(View.INVISIBLE);
Ошибка
09-07 23:59:35.061 14038-14038/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.alex.wta, PID: 14038
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.alex.wta/com.example.alex.wta.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.LinearLayout.setVisibility(int)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2702)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767)
at android.app.ActivityThread.access$900(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1449)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5951)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.LinearLayout.setVisibility(int)' on a null object reference
at com.example.alex.wta.MainActivity.onCreate(MainActivity.java:59)
at android.app.Activity.performCreate(Activity.java:6289)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2655)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2767)
at android.app.ActivityThread.access$900(ActivityThread.java:177)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1449)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5951)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1400)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1195)
MainActivity
public class MainActivity extends AppCompatActivity implements IView {
@BindView(R.id.current_temp)
TextView mCurrentTemp;
@BindView(R.id.max_temp)
TextView mMaxTemp;
@BindView(R.id.min_temp)
TextView mMinTemp;
@BindView(R.id.icon)
ImageView weatherIcon;
@BindView(R.id.pressure)
TextView mPressure;
@BindView(R.id.humidity)
TextView mHumidity;
@BindView(R.id.search)
EditText mSearchText;
@BindView(R.id.city)
TextView mCityName;
@BindView(R.id.weather)
LinearLayout mWeatherLayout;
@BindView(R.id.detail)
TextView mDetail;
private Presenter presenter;
private ProgressDialog mProgressDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
mWeatherLayout.setVisibility(View.INVISIBLE);
DataManager dataManager = new DataManager();
presenter = new Presenter(dataManager, this);
}
@Override
public void showWeatherData(WeatherResponse response) {
mCurrentTemp.setText(String.valueOf(response.getWeatherData().getTemp()) + "℃");
mMaxTemp.setText(String.valueOf(response.getWeatherData().getTemp_max()) + "℃");
mMinTemp.setText(String.valueOf(response.getWeatherData().getTemp_min()) + "℃");
mPressure.setText(String.valueOf(response.getWeatherData().getPressure()) + " hPa");
mHumidity.setText(String.valueOf(response.getWeatherData().getHumidity()) + " %");
Object weatherDetail = response.getWeatherList().get(0);
LinkedTreeMap linkedTreeMap = (LinkedTreeMap) weatherDetail;
String iconUrl = String.valueOf(linkedTreeMap.get("icon"));
mDetail.setText(String.valueOf(linkedTreeMap.get("main")));
Picasso.with(this)
.load("http://openweathermap.org/img/w/" + iconUrl + ".png").into(weatherIcon);
}
@Override
public void showLoadingDialog() {
if (mProgressDialog == null) {
mProgressDialog = new ProgressDialog(this);
mProgressDialog.setTitle("Weather App");
mProgressDialog.setMessage("Loading...");
}
mProgressDialog.show();
}
@Override
public void hideLoadingDialog() {
mProgressDialog.hide();
mWeatherLayout.setVisibility(View.VISIBLE);
}
@Override
public void errorLoadingData() {
mWeatherLayout.setVisibility(View.INVISIBLE);
Toast.makeText(this, "Error loading data, please try again.", Toast.LENGTH_SHORT).show();
}
@OnClick(R.id.btn_search)
public void onClickSearch() {
String city = mSearchText.getText().toString();
mSearchText.setText("");
clearFocusAndHideInput();
mCityName.setText(city.toUpperCase());
presenter.getWeatherForCity(city);
}
private void clearFocusAndHideInput() {
mSearchText.clearFocus();
mSearchText.setFocusable(false);
mSearchText.setFocusableInTouchMode(false);
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0);
}
@OnClick(R.id.search)
public void onEditTextClick(View v) {
mSearchText.setFocusableInTouchMode(true);
mSearchText.setFocusable(true);
InputMethodManager imm = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(v, InputMethod.SHOW_EXPLICIT);
}
@Override
protected void onDestroy() {
mProgressDialog.dismiss();
presenter.unsubscribe();
super.onDestroy();
}
}
Layout
<LinearLayout
android:id="@+id/weather"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:visibility="visible">
в onCreate
в строчке mWeatherLayout.setVisiblity(View.INVISIBLE)
mWeatherLayout
не инициализирован
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Есть какой-то быстрый алгоритм нахождения суммы всех чисел двумерного массива на java? Кроме этого ничего не нашел толкомЯ так понимаю, что...
Пытаюсь получить и изменить xml элемент Активити, находясь внутри Фрагмента
Пишу приложение, которое должно выдавать информацию о мероприятиях проходящих в том или ином городеЯ столкнулся с проблемой - где брать данные...
Я начал изучать многопоточность и столкнулся с проблемой что ExecutorService не работает в связке с ассинхронными задачами