我有一个大问题,请有人帮我。

我有一个带有选项卡和3个片段的ActionBar。

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,但传递不同的ExtraString,

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)


我不明白,因为在模拟器中它可以正常工作且设备有错误,我不知道出了什么问题,请有人提出建议,因为需要存储,因此需要维修。

最佳答案

取代这个

public static final String MOD_SEARCH = null;


为了这

public static String MOD_SEARCH = "";


我认为您的问题出在“ final”一词上,因为将变量“ null”初始化为“ final”将无法在以后更改其值,因此将其分配给Intent为Null。

希望您能为您服务。

对不起,我的英语水平不高。

10-04 22:44
查看更多