Не удается запустить другое действие из фрагмента в android Studio

#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);