#java #android #android-studio #android-fragments
#java #Android #android-студия #android-фрагменты
Вопрос:
У меня есть фрагмент, в котором я пытаюсь вызвать новое действие при нажатии кнопки.
btnLoadLimit.setOnClickListener(v -> {
Intent intent = new Intent(getActivity(), DataActivity.class);
startActivity(intent);
});
Активность с данными
public class DataActivity extends AppCompatActivity {
Context mContext;
@BindView(R.id.smart_msn_spinner)
Spinner msnSpinner;
ArrayList<String> msnArrayList = new ArrayList<>(Arrays.asList("Select MSN","002998002010" )); //"002999002020"
ArrayAdapter<String> msnAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
msnAdapter = new ArrayAdapter<>(mContext, android.R.layout.simple_spinner_dropdown_item, msnArrayList);
msnSpinner.setAdapter(msnAdapter);
msnSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
selectedMeterNo = msnArrayList.get(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
}
Когда я нажимаю на btnLoadLimit
кнопку, мое приложение закрывается со следующей ошибкой
Не удается запустить действие ComponentInfo{com.thumbsol.accuratemobileassetsmanagament/com.thumbsol.accuratemobileassetsmanagament.fragment.DataActivity}: java.lang.Исключение NullPointerException: попытка вызвать виртуальный метод ‘java.lang.Объект android.content.Context.getSystemService(java.lang.Строка)’ для нулевой ссылки на объект
в com.thumbsol.accuratemobileassetsmanagament.fragment.DataActivity.onCreate (DataActivity.java:122)
Строка 122
является msnAdapter = new ArrayAdapter<>(mContext, android.R.layout.simple_spinner_dropdown_item, msnArrayList);
Тот же метод, который я применил в моем фрагменте, и он работает, но в моем новом действии это не так.
Примечание: Действие отображается, если ни один из методов не вызван.
Комментарии:
1. Я думаю, что проблема в вашем контексте mContext;. Вы не присваиваете ему никакого значения и передаете его в ArrayAdapter как null. Попробуйте передать туда обычный контекст.
Ответ №1:
Похоже, вы не инициализируете свой mContext
. это означает, что вы передаете null в свой ArrayAdapter ().
Вам все равно не следует хранить свой контекст, поскольку ваш контекст — это ваша активность.. Вы можете просто использовать this
:
msnAdapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, msnArrayList);