当我按下主屏幕上的后退按钮退出我的应用程序时,它没有发生。它在我的登录窗口循环,所以我如何退出我的应用程序???我是新手 这是我的主屏幕代码
public class Home extends Activity implements OnClickListener {
Button btnLinkToRegister;
Button btnLinkTologin;
Button btnLinkToCompanyRegister;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.welcome);
btnLinkToRegister = (Button) findViewById(R.id.btnLinkToRegister);
btnLinkToCompanyRegister=(Button)findViewById(R.id.btnLinkToCompanyRegister);
btnLinkTologin=(Button) findViewById(R.id.btnLinkTologin);
btnLinkToRegister.setOnClickListener(this);
btnLinkTologin.setOnClickListener(this);
btnLinkToCompanyRegister.setOnClickListener(this);
}
public void onClick(View v)
{
switch(v.getId())
{
case R.id.btnLinkToRegister:
Intent i = new Intent(getBaseContext(), Registration.class);
startActivity(i);
break;
case R.id.btnLinkTologin:
Intent j = new Intent(getBaseContext(), Login.class);
startActivity(j);
break;
case R.id.btnLinkToCompanyRegister:
Intent k = new Intent(getApplicationContext(), CompanyRegister.class);
startActivity(k);
}
}
}
这是登录活动
public class Login extends Activity implements OnClickListener
{
Button mLogin;
Button mRegister;
EditText muname;
EditText mpassword;
DBHelper DB = null;
public String status="";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mRegister = (Button)findViewById(R.id.register);
mRegister.setOnClickListener(this);
mLogin = (Button)findViewById(R.id.login);
mLogin.setOnClickListener(this);
}
public void onClick(View v)
{
switch(v.getId())
{
case R.id.register:
Intent i = new Intent(getBaseContext(), Registration.class);
startActivity(i);
break;
case R.id.login:
muname = (EditText)findViewById(R.id.Ledituname);
mpassword = (EditText)findViewById(R.id.Leditpw);
String username = muname.getText().toString();
String password = mpassword.getText().toString();
if(username.equals("") || username == null)
{
Toast.makeText(getApplicationContext(), "Please enter User Name", Toast.LENGTH_SHORT).show();
}
else if(password.equals("") || password == null)
{
Toast.makeText(getApplicationContext(), "Please enter your Password", Toast.LENGTH_SHORT).show();
}
else
{
boolean validLogin = validateLogin(username, password, getApplicationContext());
if(validLogin)
{
if(status.equals("s"))
{
Intent in = new Intent(getBaseContext(), JSHomePage.class);
in.putExtra("UserName", muname.getText().toString());
startActivity(in);
}
else if(status.equals("c"))
{ Intent in = new Intent(getBaseContext(), CompView.class);
in.putExtra("UserName", muname.getText().toString());
startActivity(in);}
}
}
break;
}
}
private boolean validateLogin(String username, String password, Context baseContext)
{
DB = new DBHelper(getBaseContext());
SQLiteDatabase db = DB.getReadableDatabase();
String[] columns = {"_id","status"};
String selection = "username=? AND password=?";
String[] selectionArgs = {username,password};
Cursor cursor = null;
try{
cursor = db.query(DBHelper.Login_Table, columns, selection, selectionArgs, null, null, null);
startManagingCursor(cursor);
}
catch(Exception e)
{
e.printStackTrace();
}
int numberOfRows = cursor.getCount();
if(numberOfRows <= 0)
{
Toast.makeText(getApplicationContext(), "User Name and Password miss match..\nPlease Try Again", Toast.LENGTH_LONG).show();
Intent intent = new Intent(getBaseContext(), Login.class);
startActivity(intent);
return false;
}
cursor.moveToNext();
status = cursor.getString(cursor.getColumnIndex("status"));
startManagingCursor(cursor);
return true;
}
public void onBackPressed()
{
Intent i = new Intent(Login.this, Home.class);
startActivity(i);
}
public void onDestroy()
{
super.onDestroy();
DB.close();
}
}
答案 0 :(得分:1)
我猜你试图达到这样的效果:
HomeActivity - &gt; buttonClicked - &gt; LoginActivity - &gt; BackPressed - &gt; HomeActivity - &gt; BackPressed - &gt;退出您的应用
在您的情况下,删除onBackPressed覆盖方法应该可以解决这个问题(Android管理自动后退键活动之间的导航)。 你的循环可能来自对startActivity的调用,它将新活动添加到堆栈而不是重新堆叠。如果你重写onBackPressed(),你可能需要调用super,不确定。