我有一个应用程序,它有2个按钮,保存并退出。保存按钮插入sqlite并重置所有EditText和listview,退出按钮关闭我的android应用程序。这是我的保存按钮代码:
btnsaveto = (Button) findViewById(R.id.btnsaveto);
btnsaveto.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
//do insert into sqlite
Globals.mylist.clear();//my listview
Globals.outletname=null;//my Editext
Globals.outletid=0;//my Editext
Globals.notes=null;//my Editext
Intent intent = getIntent();
finish();
startActivity(intent);
}
});
这是我的退出按钮的代码:
btnexit = (Button) findViewById(R.id.btnexit);
btnexit.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
finish();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
} );
这是我的oncreate活动:
super.onCreate(savedInstanceState);
setContentView(R.layout.entry_to);
txtoutlet = (TextView) findViewById(R.id.txtoutlet);
dataSource = new DBDataSource(this);
dataSource.open();
Bundle bun = EntryTO.this.getIntent().getExtras();
try{
if (Globals.mylist == null){Globals.mylist = new ArrayList<HashMap<String, String>>();}
id = bun.getLong("id");
Id=String.valueOf(id);
description = bun.getString("description");
qty = bun.getString("qty");
if(bun.getString("outletname")!=null){
Globals.outletid = bun.getLong("outletid");
Globals.outletname = bun.getString("outletname");
}
map1 = new HashMap<String, String>();
if(Globals.mylist.size() == 0){
if(Id!=null && description!=null && Globals.outletname!=null){
map1.put("one", Id);
map1.put("two", description);
map1.put("three", qty);
Globals.mylist.add(map1);
txtoutlet.setText(Globals.outletname);
}else{
txtoutlet.setText(Globals.outletname);
}
}else{
int j=Globals.mylist.size();
if(Id!=null && description!=null && Globals.outletname!=null){
map1.put("one", Id);
map1.put("two", description);
map1.put("three", qty);
Globals.mylist.add(j,map1);
txtoutlet.setText(Globals.outletname);
}else{
txtoutlet.setText(Globals.outletname);
}
}
try {
adapter = new CustomAdapter(EntryTO.this, Globals.mylist, R.layout.item_to,
new String[] {"two", "three"},
new int[] {R.id.edtbrandto,R.id.edtqtyto });
setListAdapter(adapter);
}catch (Exception e) {}
}catch(NullPointerException e){}
btnsaveto = (Button) findViewById(R.id.btnsaveto);
btnsaveto.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
try{
String orderid=orderid();
String orderdate=orderdate();
String notes = Globals.notes;
String image = photoToBase64String() ;
long outletid = Globals.outletid;
order = dataSource.createorder(orderid, orderdate, notes, image , outletid);
for(int i=0;i<=Globals.mylist.size()-1;i++){
map1=Globals.mylist.get(i);
String Id = map1.get("one");
String qty = map1.get("three");
orderdtl = dataSource.createorderdtl(orderid, Id, qty);
Toast.makeText(EntryTO.this, "Mengisi Data Ke-"+i+", tunggu sebentar..\n" ,Toast.LENGTH_LONG).show();
}
Globals.mylist.clear();
Globals.outletname=null;
Globals.outletid=0;
Globals.mPath=null;
Globals.notes=null;
Intent intent = getIntent();
finish();
startActivity(intent);
}catch(NullPointerException e){
}
}
});
问题是当我重新打开我的应用程序时,EditText和ListView仍然填充。我重置意图时有什么问题,或者我没有正确关闭应用程序。
注意:我有3个Activity,并且我在Globals.java上声明了我的所有变量,以便在我获得其他活动的其他值时保留我的值。
答案 0 :(得分:1)
您无法关闭您的申请。 android不允许这样。你可以调用你的应用程序将在后台返回的家庭意图。
答案 1 :(得分:1)
如果您的应用程序只包含一个活动,那么您应该考虑使用finish()方法或super.onBackPressed()。
如果您的应用程序有多个活动,并且假设您有登录页面或启动活动(无论哪个是启动应用程序的第一个活动),请将其称为A,然后调用 acitivty A使用FLAG_CLEAR_TOP并通过bundle传递一些值,并在A中检查是否要退出app,如果是,则完成该活动。
答案 2 :(得分:0)
试试这个......
finish();
System.exit(0);
答案 3 :(得分:0)
您可以维护以下活动堆栈:
当您需要关闭应用程序时,可以对堆栈中的每个活动调用finish()。
答案 4 :(得分:0)
您只需使用以下代码退出最近的代码即可。
活动android:name =“。AppName”android:excludeFromRecents =“true”