При нажатии на кнопку, определенную во фрагменте выкидывает NullPointerException. Сам фрагмент:
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
private String mParam1;
private String mParam2;
public HashFragment() {
// Required empty public constructor
}
public static HashFragment newInstance(String param1, String param2) {
HashFragment fragment = new HashFragment();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@InjectPresenter
CalculatorPresenter calculatorPresenter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
mParam1 = getArguments().getString(ARG_PARAM1);
mParam2 = getArguments().getString(ARG_PARAM2);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_hash, container, false);
Button calculateBtn = (Button) view.findViewById(R.id.calculateBtn);
Button savingBtn = (Button) view.findViewById(R.id.savingBtn);
final EditText inputText = (EditText) view.findViewById(R.id.inputEditText);
final EditText outputText = (EditText) view.findViewById(R.id.outputEditText);
Spinner algorithmsSpinner = (Spinner) view.findViewById(R.id.algorithmSpinner);
ArrayAdapter<String> mArrayAdapter = new ArrayAdapter<String>(super.getContext(), android.R.layout.simple_list_item_1, ListAlgorithms.values);
mArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
algorithmsSpinner.setAdapter(mArrayAdapter);
final String[] algorithm = new String[1];
AdapterView.OnItemSelectedListener onItemSelectedListener = new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
algorithm[0] = (String)parent.getItemAtPosition(position);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
};
algorithmsSpinner.setOnItemSelectedListener(onItemSelectedListener);
calculateBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
outputText.setText(calculatorPresenter.calculateOnClick(inputText.getText().toString(), algorithm[0]));
}
});
return view;
}
Исключение вылетает конкретно при вызове
calculateBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
outputText.setText(calculatorPresenter.calculateOnClick(inputText.getText().toString(), algorithm[0]));
}
Код активити
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TabLayout tabLayout = findViewById(R.id.tabLayout);
TabItem tabItem1 = findViewById(R.id.hashItem);
TabItem tabItem2 = findViewById(R.id.passwordItem);
final ViewPager viewPager = findViewById(R.id.viewPager2);
PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
viewPager.setAdapter(pagerAdapter);
tabLayout.setupWithViewPager(viewPager);
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
viewPager.setCurrentItem(tab.getPosition());
}
Код адаптера
private int tabsNums;
public PagerAdapter(FragmentManager fm, int tabsNums){
super(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT);
this.tabsNums = tabsNums;
}
@NonNull
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
return new HashFragment();
case 1:
return new PasswordFragment();
default:
return null;
}
}
@Override
public int getCount() {
return tabsNums;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position){
case 0:
return "Hash Calculator";
case 1:
return "Password Generator";
default:
return null;
}
}
В первый раз работаю с фрагментами, возможно взаимодействие пользователя с UI фрагмента должно обрабатываться активити? Заранее спасибо
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Почему-то SwitchButton-ы в item-ах в recyclerView работают некорректноПри переключении - иногда переключается не только тот, который переключаю, но и еще...
Есть BottomNavigationView и 3 Fragment'аФрагмент "Home" содержит ScrollView