传递参数不起作用

时间:2016-05-25 07:34:14

标签: java android android-studio parameters

我不知道为什么变量myInt在我的代码中的某些地方为空。

在这些行中没关系,因此变量不为null:

myInt = bundle2.getString("scelta2", null);
titolo3.setText(myInt);

当我在myInt中使用变量Paragraph p1=new Paragraph(myInt);时,它为空。

可能是什么问题?

public class TwoFragment extends Fragment{

                private View v;
                Intent chooser=null;
                String myInt="";

                public TwoFragment() {
                    // Required empty public constructor
                }

                @Override
                public void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                }

                @Override
                public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                         Bundle savedInstanceState) {
                    // Inflate the layout for this fragment
                    View rootView = inflater.inflate(R.layout.fragment_two, container, false);
                    Button mButton = (Button) rootView.findViewById(R.id.newbutton);
                    mButton.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View v) {

                            //sendemail();
                            createPDF();
                            viewPDF();



                        }
                    });
                    TextView titolo3 = (TextView)rootView.findViewById(R.id.result);
                    TextView titolo2 = (TextView)rootView.findViewById(R.id.result2);
                    TextView titolo4 = (TextView)rootView.findViewById(R.id.resultpizze);

                    //TextView titolo = (TextView)rootView.findViewById(R.id.quantità3);

                  /*  Bundle bundle2=getArguments();
                    if(bundle2 != null){
                        String string = bundle2.getString("scelta2", null);
                        titolo3.setText(string);
                    }*/

                    Bundle bundle2=getArguments();
                    if(bundle2 != null){
                        myInt = bundle2.getString("scelta2", null);
                       titolo3.setText(myInt);
                    }

                    Bundle bundle3=getArguments();
                    if(bundle3 != null){
                       // String myInt3 = bundle3.getString("totalebirre", null);
                       //  cazzo2=Integer.parseInt(myInt3);
                       int cazzo2=bundle3.getInt("totalebirre");
                        titolo2.setText(String.valueOf(cazzo2));



                    }
                    Bundle bundle=getArguments();
                    if(bundle != null){
                        // String myInt2 = bundle2.getString("totalepizze", null);
                        //   cazzo=Integer.parseInt(myInt2);
                        //titolo2.setText(myInt2);
                        String string=bundle.getString("scelta3", null);
                         titolo4.setText(string);

                    }



                    return rootView;
                }
               /* public void sendemail(){

                    Intent intent = new Intent(Intent.ACTION_SEND);
                    intent.setData(Uri.parse("mailto:"));
                    String[] to={"marco_marcoletto@hotmail.it"};
                    intent.putExtra(Intent.EXTRA_EMAIL,to);
                    intent.putExtra(Intent.EXTRA_SUBJECT, "ciao");
                    intent.putExtra(Intent.EXTRA_TEXT, "zao");
                    intent.setType("message/rfc822");
                    chooser=intent.createChooser(intent,"manda email");
                    startActivity(chooser);
                }*/
               public void createPDF() {

                   Document doc = new Document();

                   try {
                       String path = Environment.getExternalStorageDirectory()
                               .getAbsolutePath() + "/droidText";

                       File dir = new File(path);
                       if (!dir.exists())
                           dir.mkdirs();

                       Log.d("PDFCreator", "PDF Path: " + path);

                       File file = new File(dir, "sample.pdf");
                       FileOutputStream fOut = new FileOutputStream(file);

                       PdfWriter.getInstance(doc, fOut);

                       // open the document
                       doc.open();
                       ByteArrayOutputStream stream = new ByteArrayOutputStream();
                       Bitmap bitmap = BitmapFactory.decodeResource(getContext()
                               .getResources(), R.drawable.androtuto);
                       bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
                       Image myImg = Image.getInstance(stream.toByteArray());
                       myImg.setAlignment(Image.MIDDLE);

                       // add image to document
                       doc.add(myImg);

                       Paragraph p1 = new Paragraph(myInt);
                   Log.d("ciao",myInt);

                       Font paraFont = new Font(Font.COURIER);
                       p1.setAlignment(Paragraph.ALIGN_CENTER);
                       p1.setFont(paraFont);

                       // add paragraph to document
                       doc.add(p1);

                       Paragraph p2 = new Paragraph("Ciao");
                       Font paraFont2 = new Font(Font.COURIER, 14.0f, Color.GREEN);
                       p2.setAlignment(Paragraph.ALIGN_CENTER);
                       p2.setFont(paraFont2);

                       doc.add(p2);

                       stream = new ByteArrayOutputStream();
                       bitmap = BitmapFactory.decodeResource(getContext()
                               .getResources(), R.drawable.android);
                       bitmap.compress(Bitmap.CompressFormat.JPEG, 100, stream);
                       myImg = Image.getInstance(stream.toByteArray());
                       myImg.setAlignment(Image.MIDDLE);

                       // add image to document
                       doc.add(myImg);

                       // set footer
                       Phrase footerText = new Phrase("Pied de page ");
                       HeaderFooter pdfFooter = new HeaderFooter(footerText, false);
                       doc.setFooter(pdfFooter);

                   } catch (DocumentException de) {
                       Log.e("PDFCreator", "DocumentException:" + de);
                   } catch (IOException e) {
                       Log.e("PDFCreator", "ioException:" + e);
                   } finally {
                       doc.close();
                   }

               }
                public void viewPDF(){
                    String path = "/sdcard/droidText/sample.pdf";
                    File targetFile = new File(path);
                    Uri targetUri = Uri.fromFile(targetFile);

                    Intent intent;
                    intent = new Intent(Intent.ACTION_VIEW);
                    intent.setDataAndType(targetUri, "application/pdf");

                    startActivity(intent);
                }

            }

来自我通过变量的碎片:

public class ThreeFragment extends Fragment implements
        android.widget.CompoundButton.OnCheckedChangeListener {

    ListView lv2;
    ArrayList<Planet> planetList;
    ListView lv;

    ArrayList<Birra> birraList;
    BirraAdapter biAdapter;
    PlanetAdapter plAdapter;
    Planet p;
    String myInt="";



    PlanetAdapter.PlanetHolder holder;


    public ThreeFragment() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment

        final ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.fragment_three, container, false);

        Button mButton = (Button) rootView.findViewById(R.id.button2);
        mButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                MyListFragment mlf=new MyListFragment();

                mlf.showResult(v);
              // MyListFragment.showResult(v);
                showResult2(v);


            }
        });
        //return inflater.inflate(R.layout.fragment_list2, container, false);
        return rootView;
    }


    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        lv2 = (ListView) getView().findViewById(R.id.listview2);
        displayBirraList();
    }


    private void displayBirraList() {

        birraList = new ArrayList<Birra>();
        birraList.add(new Birra("Paulaner", 6, "€"));
        birraList.add(new Birra("Forst", 7, "€"));
        birraList.add(new Birra("Peroni", 5, "€"));
        birraList.add(new Birra("Corona", 5, "€"));
        birraList.add(new Birra("Nastro Azzurro", 4, "€"));
        biAdapter = new BirraAdapter(birraList, getContext()) {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                int pos = lv2.getPositionForView(buttonView);
                if (pos != ListView.INVALID_POSITION) {
                    Birra b = birraList.get(pos);
                    b.setSelected(isChecked);


            /*Toast.makeText(
                getActivity(),
                "Clicked on Pizza: " + p.getName() + ". State: is "
                        + isChecked, Toast.LENGTH_SHORT).show();*/
                }


            }


        };


        lv2.setAdapter(biAdapter);
    }


    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {


        /*int pos = lv.getPositionForView(buttonView);
        if (pos != ListView.INVALID_POSITION) {
            Planet p = planetList.get(pos);
            p.setSelected(isChecked);


            *//**//**//**//*Toast.makeText(
                getActivity(),
                "Clicked on Planet: " + p.getName() + ". State: is "
                        + isChecked, Toast.LENGTH_SHORT).show();*//**//**//**//*
        }
*/
    }


    public void showResult2(View v) {
        String result = "Selected Product are :";
        int totalAmount = 0;
       // String a = "";


        for (Birra b : biAdapter.getBox()) {

            if (b.selected) {

                result += "\n" + b.name + " " + b.distance + "€" + "q.tà :" + b.getQuantità();
                int quantitaInt = Integer.parseInt(b.getQuantità());
                totalAmount += b.distance * quantitaInt;
              //  a=String.valueOf(totalAmount);


            }
        }
      /*  for (Planet p : plAdapter.getBox()) {
            if (p.isSelected()) {


                result += "\n" + p.getName() + " " + p.getDistance() + "€" + "q.tà :" + p.getQuantità();
                int quantitaInt = Integer.parseInt(p.getQuantità());
                //totalAmount2+=p.distance * quantitaInt;
                //z=String.valueOf(totalAmount2);


            }
        }*/



        Toast.makeText(getActivity(), result + "\n" +myInt + "\n" + "Total Amount:=" + totalAmount + "€", Toast.LENGTH_LONG).show();
           Bundle bun2 = new Bundle();
            bun2.putString("scelta2", result);
            TwoFragment fgsearch2 = new TwoFragment();
            fgsearch2.setArguments(bun2);
            android.support.v4.app.FragmentTransaction transaction2 = getActivity().getSupportFragmentManager().beginTransaction();
            transaction2.replace(R.id.content_main, fgsearch2);
            transaction2.commit();

            Bundle bun = new Bundle();
           // bun.putString("totalebirre", a);
        bun.putInt("totalebirre", totalAmount);
            TwoFragment fgsearch = new TwoFragment();
            fgsearch.setArguments(bun);
            android.support.v4.app.FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
            transaction.replace(R.id.content_main2, fgsearch);
            transaction.commit();




    }
}

1 个答案:

答案 0 :(得分:0)

好的,最后发现你没有正确传递参数:

public static TwoFragment newInstance(int yourInt) {
    TwoFragment f = new TwoFragment();
    // Supply index input as an argument.
    Bundle args = new Bundle();
    args.putInt("myInt", yourInt);
    f.setArguments(args);
    return f;
}

然后在onCreateView中使用

获取你的int
Bundle args = getArguments();
if(args != null)
   myInt = args.getInt("myInt", 0);

并确保使用以下命令创建片段实例:

TwoFragment yourfragment = TwoFragment.newInstance(123); //here pass your int

你有:

Bundle bun2 = new Bundle();
bun2.putString("scelta2", result);
TwoFragment fgsearch2 = new TwoFragment();
fgsearch2.setArguments(bun2);

您必须更改为:

TwoFragment fgsearch2 = TwoFragment.newInstance(result);

最后替换:

Bundle bun2 = new Bundle();
            bun2.putString("scelta2", result);
            TwoFragment fgsearch2 = new TwoFragment();
            fgsearch2.setArguments(bun2);
            android.support.v4.app.FragmentTransaction transaction2 = getActivity().getSupportFragmentManager().beginTransaction();
            transaction2.replace(R.id.content_main, fgsearch2);
            transaction2.commit();

使用:

        TwoFragment fgsearch2 = TwoFragment.newInstance(result);
        android.support.v4.app.FragmentTransaction transaction2 = getActivity().getSupportFragmentManager().beginTransaction();
        transaction2.replace(R.id.content_main, fgsearch2);
        transaction2.commit();