1

ホーム画面の戻るボタンを押してアプリを終了しても、それは起こりません。ログインウィンドウでループしているのですが、どうすればアプリを終了できますか??? m android を初めて使用する場合、ここに私のホーム画面のコードを示します

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();
 }
}
4

1 に答える 1

1

私はあなたがそのようなものを達成しようとしていると思います:

HomeActivity -> buttonClicked -> LoginActivity -> BackPressed -> HomeActivity -> BackPressed -> アプリを終了

あなたの場合、 onBackPressed オーバーライドされたメソッドを削除すると、うまくいくはずです(Androidはバックキーを使用してアクティビティ間のナビゲーションを自動的に管理します)。あなたのループはおそらく、スタッキングを解除するのではなく、新しいアクティビティをスタックに追加する startActivity への呼び出しから発生します。また、onBackPressed() をオーバーライドする場合は、おそらく super を呼び出す必要がありますが、よくわかりません。

于 2012-07-04T21:47:36.597 に答える