У меня большая проблема, пожалуйста, помогите мне пожалуйста.Эмулятор не дает ошибки, но устройство дает java.lang.NullPointerException on putExtra()
У меня есть ActionBar с вкладками и 3 фрагментами.
В onCreateView
методе у меня есть это:
MainActivity.java
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = null;
TextView textView;
final Intent intent = new Intent(getActivity(),ResultActivity.class);
if(getArguments().getInt(ARG_SECTION_NUMBER) == 1){
rootView = inflater.inflate(R.layout.fragment_main, container, false);
Button btn = (Button) rootView.findViewById(R.id.procura_ingredientes);
final EditText ing_1 = (EditText) rootView.findViewById(R.id.ingredient_1);
final EditText ing_2 = (EditText) rootView.findViewById(R.id.ingredient_2);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
intent.putExtra(MOD_SEARCH,1);
String ingredient_1 = ing_1.getText().toString();
String ingredient_2 = ing_2.getText().toString();
if(ingredient_1.length() <= 0) ingredient_1 = "";
if(ingredient_2.length() <= 0) ingredient_2 = "";
intent.putExtra("ingredient_1",ingredient_1);
intent.putExtra("ingredient_2",ingredient_2);
startActivity(intent);
}
});
}else if(getArguments().getInt(ARG_SECTION_NUMBER) == 2){
rootView = inflater.inflate(R.layout.fragment_two, container, false);
GridView gridview = (GridView) rootView.findViewById(R.id.gridview);
final ImageAdapter imageAdapter = new ImageAdapter(getActivity());
gridview.setAdapter(imageAdapter);
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
//Toast.makeText(getActivity()," " + position, Toast.LENGTH_SHORT).show();
long cat = imageAdapter.getItemId(position);
if(cat <= 0) cat = 1;
intent.putExtra(MOD_SEARCH,2);
intent.putExtra("cat_id",cat);
startActivity(intent);
}
});
}else if(getArguments().getInt(ARG_SECTION_NUMBER) == 3) {
rootView = inflater.inflate(R.layout.fragment_three, container, false);
final EditText editText = (EditText) rootView.findViewById(R.id.recipe_search_term);
Button button = (Button) rootView.findViewById(R.id.submit_recipe_search);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int cont = editText.getText().toString().length();
if (cont < 2) {
AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());
dialog.setTitle("Atenção");
dialog.setMessage("O nome da receita precisa ter mais de " + cont + " letras ");
dialog.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.dismiss();
}
});
dialog.show();
} else {
intent.putExtra(MOD_SEARCH,0);
String recipe = editText.getText().toString();
if(recipe.length() <= 0) recipe = "";
intent.putExtra("recipe_name",recipe);
startActivity(intent);
}
}
});
}
return rootView;
/* textView.setText(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)));*/
}
}
Если вы посмотрите вы видите
if(getArguments().getInt(ARG_SECTION_NUMBER) == 1){
}else if(getArguments().getInt(ARG_SECTION_NUMBER) == 2){
else
это управлять тем, что вкладка пользователя находятся, все идут то же ResultActivity, но пропускает другие ExtraStrings,
intent.putExtra(MOD_SEARCH,0);
intent.putExtra(MOD_SEARCH,1);
intent.putExtra(MOD_SEARCH,2);
MOD_SEARCH контролирует, какой результат был выполнен.
ResultActivity.java
public static final String MOD_SEARCH = null;
mode = getIntent().getIntExtra(MOD_SEARCH,0);
if(mode == 0){ ..
}else if(mode == 1) ..
}else if(mode == 2) ..
Так, в эмуляторе она отлично работает все, когда я нажимаю на в каждом фрагменте он показывает мне правильную информацию.
После публикации приложения в Google Play несколько дней назад, и я получаю эту ошибку:
java.lang.NullPointerException
at android.content.Intent.putExtra(Intent.java:5558)
at com.iondev.cozinhaparasolteiros.MainActivity$PlaceholderFragment$2.onItemClick(MainActivity.java:256)
и
java.lang.NullPointerException
at android.content.Intent.putExtra(Intent.java:5325)
at com.iondev.cozinhaparasolteiros.MainActivity$PlaceholderFragment$1.onClick(MainActivity.java:226)
Я не понимаю, потому что в эмуляторе она работает без ошибок и устройств имеет ошибку, я не знаю, что не так, пожалуйста, у кого-то есть предложение, нужен ремонт, потому что в магазине.
Что такое строка 226 'MainActivity.java'? – Raghunandan
is intent.putExtra (MOD_SEARCH, 2); Большое спасибо, мне нужно объявить об этом. – overallduka