我正在使用预构建的导航抽屉活动,该活动仅使用 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;
}
}
我将从图库活动调用幻灯片活动 有人可以建议一种简单明了的方法吗