无法在导航抽屉中保存片段状态

时间:2021-01-04 11:37:41

标签: android android-fragments

我正在使用预构建的导航抽屉活动,该活动仅使用 1 个片段,并在活动更改时替换内容。我需要保存和恢复我的片段状态。也试过 onsaveinstancestate。 主AC.JAVA

{

    private AppBarConfiguration mAppBarConfiguration;
    InputStream inputStream;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        FloatingActionButton fab = findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        //.setAction("Action", null).show();
                sendmail();
            }
        });
        FloatingActionButton fab2 = findViewById(R.id.fab2);
        fab2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                //.setAction("Action", null).show();
                sendwhatsapp();
            }
        });
        inputStream=getResources().openRawResource(R.raw.read);
        BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
        try {
            String line1;
            while ((line1=reader.readLine())!=null)
            {
                Log.i("dddd",line1);
            }
        }
        catch (Exception e)
        {
            Log.i("line","xxxxxxxl");
        }
        DrawerLayout drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);
        // Passing each menu ID as a set of Ids because each
        // menu should be considered as top level destinations.
        mAppBarConfiguration = new AppBarConfiguration.Builder(
                R.id.nav_home, R.id.nav_gallery, R.id.nav_slideshow)
                .setDrawerLayout(drawer)
                .build();
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        NavigationUI.setupActionBarWithNavController(this, navController, mAppBarConfiguration);
        NavigationUI.setupWithNavController(navigationView, navController);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onSupportNavigateUp() {
        NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
        return NavigationUI.navigateUp(navController, mAppBarConfiguration)
                || super.onSupportNavigateUp();
    }
    private  void sendmail()
    {
        String rec="sakinahhamid33@gmail.com";
        Intent intent=new Intent(Intent.ACTION_SEND);
        intent.putExtra(Intent.EXTRA_EMAIL,new String[]{rec});
        intent.setType("message/rfc822");
        startActivity(Intent.createChooser(intent,"Choose email app"));


    }
    private void sendwhatsapp() {
        String mbno = "9673012876";
        boolean in = appinsn("com.whatsapp");
        if (in) {
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse("http://api.whatsapp.com/send?phone=" + "91" + mbno));
            startActivity(intent);
        } else {
            Toast.makeText(MainActivity.this,"whatsapp not installed",Toast.LENGTH_LONG);
        }
    }
    private boolean appinsn(String url)
    {
        PackageManager packageManager=getPackageManager();
        boolean appin;
        try {
            packageManager.getPackageInfo(url,PackageManager.GET_ACTIVITIES);
            appin=true;
        }
        catch (PackageManager.NameNotFoundException e)
        {
            appin=false;
        }
        return appin;
    }
}

幻灯片活动

public class SlideshowFragment extends Fragment 
{
    Spinner spinner;
    InputStream inputStream;
    List valuelist=new ArrayList();
    TextView textView;
    ArrayList<String> prices=new ArrayList<String>();
    ArrayList<String> lsvals=new ArrayList<String>();
    ListView listView;
    Button b1;
    Button b2;
    String prinval;
    int geps;
    float calct= (float) 0.0;


    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i("i called here","i vised hereee");
        if(savedInstanceState!=null)
        {
            Log.i("i called here","i vised hereee2");
            lsvals=savedInstanceState.getStringArrayList("lsvals");
        }
    }


    public View onCreateView(@NonNull final LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {

        setRetainInstance(true);
        View root = inflater.inflate(R.layout.fragment_slideshow, container, false);
        spinner=root.findViewById(R.id.spinner);
        listView=root.findViewById(R.id.lsview);
        textView=root.findViewById(R.id.edtext);
        b1=root.findViewById(R.id.button1);
        b2=root.findViewById(R.id.b2);
       // ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
               // Manifest.permission.READ_EXTERNAL_STORAGE}, PackageManager.PERMISSION_GRANTED);


        //Intent intent=getActivity().getIntent();
        inputStream=getResources().openRawResource(R.raw.read);
        BufferedReader reader=new BufferedReader(new InputStreamReader(inputStream));
        try {
            String line1;
            while ((line1=reader.readLine())!=null)
            {
                String [] values=line1.split(",");
                valuelist.add(values[0]);
                prices.add(values[1]);

            }
        }
        catch (Exception e)
        {
            Log.i("line","xxxxxxxl");
        }
        lsvals.add("ITEM || QUANTITY || PRICE");
        final ArrayAdapter<String> spinnervals=new ArrayAdapter<String>(getContext(),R.layout.spinner_layout,R.id.text,valuelist);
        final ArrayAdapter<String> arrayAdapter=new ArrayAdapter<String>(getContext(),android.R.layout.simple_list_item_1,lsvals);
        listView.setAdapter(arrayAdapter);
        spinner.setAdapter(spinnervals);

        Bundle bundle = getArguments();
        if (bundle != null) {
            String geauan=bundle.getString("quantity");
            float val=Float.parseFloat(geauan);
            geps=bundle.getInt("position");
            prinval=valuelist.get(geps)+" || "+geauan+" || "+Float.toString(Float.parseFloat(prices.get(geps))*val);
            lsvals.add(prinval);
            arrayAdapter.notifyDataSetChanged();
        }
        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                if(position==0)
                {
                    Toast.makeText(getContext(),spinnervals.getItem(position),Toast.LENGTH_SHORT).show();
                    geps=position;
                }
                else
                {Toast.makeText(getContext(),spinnervals.getItem(position),Toast.LENGTH_SHORT).show();
                    geps=position;
                }
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
            });
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
                AlertDialog.Builder builder=new AlertDialog.Builder(getActivity());
                builder.setTitle("DELETE");
                builder.setCancelable(true);
                builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Log.i("No","Not placing order");
                        dialog.cancel();
                    }
                });
                builder.setPositiveButton("delete", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        if (position == 0) {
                            Toast.makeText(getContext(), "Cannot delete this item", Toast.LENGTH_SHORT).show();
                        } else {
                            lsvals.remove(position);
                            arrayAdapter.notifyDataSetChanged();
                        }
                    }
                });
                builder.create();
                builder.show();
            }

        });
        b1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String quanval=textView.getText().toString();
                int val=Integer.parseInt(quanval);
                float total=Float.parseFloat(prices.get(geps))*val;
                calct=calct+total;
                prinval=valuelist.get(geps)+" || "+quanval+" || "+Float.toString(total);
                lsvals.add(prinval);
                arrayAdapter.notifyDataSetChanged();

            }
        });
        b2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                /**HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
                HSSFSheet hssfSheet = hssfWorkbook.createSheet("Custom Sheet");
                HSSFRow hssfRow = hssfSheet.createRow(0);
                HSSFCell hssfCell = hssfRow.createCell(0);
                hssfCell.setCellValue("hhhhhhhhhh fffffffffff cccccccccc");
                File filePath = new File(Environment.getExternalStorageDirectory()+"/demo.xlsx");
                try {
                    if (!filePath.exists()){
                        filePath.createNewFile();
                    }

                    FileOutputStream fileOutputStream= new FileOutputStream(filePath);
                    hssfWorkbook.write(fileOutputStream);

                    if (fileOutputStream!=null){
                        fileOutputStream.flush();
                        fileOutputStream.close();
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }**/
                final StringBuilder sb = new StringBuilder();
                for (String s : lsvals) {
                    sb.append(s);
                    sb.append("\n");
                }
                AlertDialog.Builder builder2=new AlertDialog.Builder(getActivity());
                builder2.setTitle("PLACE ORDER USING");
                builder2.setCancelable(true);
                builder2.setNegativeButton("WHATSAPP", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Intent intent = new Intent(Intent.ACTION_VIEW);
                        intent.setData(Uri.parse("http://api.whatsapp.com/send?phone=" + "91" +"9284093467"+"&text="+sb));
                        startActivity(intent);
                        dialog.cancel();
                    }
                });
                builder2.setPositiveButton("EMAIL", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Intent intent = new Intent(Intent.ACTION_SEND);
                        intent.putExtra(Intent.EXTRA_EMAIL, "sakinahhamid33@gmail.com");
                        intent.putExtra(Intent.EXTRA_SUBJECT, "Placing order");
                        intent.putExtra(Intent.EXTRA_TEXT, sb.toString());
                        intent.setType("message/rfc822");
                        startActivity(Intent.createChooser(intent,"Choose email app"));
                    }
                });
                builder2.create();
                builder2.show();


            }
        });
        //onSaveInstanceState(savedInstanceState);
        return root;


    }



   

}

我将从图库活动调用幻灯片活动 有人可以建议一种简单明了的方法吗

0 个答案:

没有答案
相关问题