我有2项活动。一个叫Login
,另一个叫ListDeals
。 Login
有一个带有提交按钮的表单,按下该按钮时,应将我们的活动切换为ListDeals
。这很有效。
但是,在Logcat中,我没有收到消息说该活动已经开始。此外,当在ListDeals
时,如果用户按下后退按钮,则两个活动都应该被杀死。我环顾四周,这就是我想出来的:
public class Login extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.login_screen);
Button submit=(Button)findViewById(R.id.submit);
submit.setOnClickListener(onSubmit);
}
private View.OnClickListener onSubmit=new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent myIntent=new Intent(view.getContext(),ListDeals.class );
startActivityForResult(myIntent,0);
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.login_screen, menu);
return true;
}
@Override
public void onActivityResult(int requestCode,int resultCode, Intent data) {
if(resultCode==2) {
finish();
}
}
}
public class ListDeals extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.deals_list);
System.out.println("starting activity");
}
@Override
protected void onDestroy() {
System.out.println("dude");
setResult(2);
super.onDestroy();
}
protected void onStop(){
setResult(2);
super.onStop();
}
}
然而,当我按下后退按钮时,它会将我带回Login
活动,这不是我想要的。
答案 0 :(得分:5)
在您的点击处理程序onSubmit
中,只需完成您的登录活动,就像这样。这样,它就不会出现在活动堆栈上,因此,从其他活动中退回会使用户回到他们开始的位置。
private View.OnClickListener onSubmit=new View.OnClickListener()
{
@Override
public void onClick(View view)
{
Intent myIntent=new Intent(view.getContext(),ListDeals.class);
startActivity(myIntent);
finish();
}
};
另外,为了解决第二个问题,请使用Log class methods,例如Log.i
或Log.d
作为调试消息,这些消息将显示在logcat中。
答案 1 :(得分:1)
在开始新活动之前完成登录。此外,你不需要结果。
private View.OnClickListener onSubmit=new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent myIntent=new Intent(Login.this, ListDeals.class );
startActivity(myIntent);
Login.this.finish() // add this to finish it.
}
};