Android ActionBar夏洛克后退按钮和智能手机后退按钮
问题:Android ActionBar夏洛克后退按钮和智能手机后退按钮,android,android-activity,actionbarsherlock,android-lifecycle,Android,Android Activity,Actionbarsherlock,Android Lifecycle,问题: public class Principal extends SherlockActivity { public static int THEME = R.style.Theme_Sherlock; private Button entrar; private Button cadastrar; @Override protected void onCreate(Bundle savedInstanceState) {
public class Principal extends SherlockActivity {
public static int THEME = R.style.Theme_Sherlock;
private Button entrar;
private Button cadastrar;
@Override
protected void onCreate(Bundle savedInstanceState) {
//setTheme(Principal.THEME); //Used for theme switching in samples
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
entrar = (Button)findViewById(R.id.entrar);
entrar.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
startActivity(new Intent(Principal.this,LoginActivity.class));
finish();
}
});
cadastrar = (Button)findViewById(R.id.cadastrar_home);
cadastrar.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Intent intent = new Intent(Principal.this, RegisterActivity.class);
startActivity(intent);
//finish();
}
});
}
public class RegisterActivity extends SherlockActivity{
protected void onCreate(Bundle savedInstanceState) {
setTheme(Principal.THEME); //Used for theme switching in samples
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId())
{
case android.R.id.home:
// Do whatever you want, e.g. finish()
Intent intent = new Intent(this, Principal.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
break;
}
return true;
}
}
当我在第二个活动中按下智能手机和actionbar上的“后退”按钮时,我有一个要回调的主要活动。但它总是崩溃,当我完成一个动作时它就开始工作了;在主要活动中,但如果我这样做,那么智能手机的后退按钮将无法正常工作
main活动:
public class Principal extends SherlockActivity {
public static int THEME = R.style.Theme_Sherlock;
private Button entrar;
private Button cadastrar;
@Override
protected void onCreate(Bundle savedInstanceState) {
//setTheme(Principal.THEME); //Used for theme switching in samples
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
entrar = (Button)findViewById(R.id.entrar);
entrar.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
startActivity(new Intent(Principal.this,LoginActivity.class));
finish();
}
});
cadastrar = (Button)findViewById(R.id.cadastrar_home);
cadastrar.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Intent intent = new Intent(Principal.this, RegisterActivity.class);
startActivity(intent);
//finish();
}
});
}
public class RegisterActivity extends SherlockActivity{
protected void onCreate(Bundle savedInstanceState) {
setTheme(Principal.THEME); //Used for theme switching in samples
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId())
{
case android.R.id.home:
// Do whatever you want, e.g. finish()
Intent intent = new Intent(this, Principal.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
break;
}
return true;
}
}
secondactivity:
public class Principal extends SherlockActivity {
public static int THEME = R.style.Theme_Sherlock;
private Button entrar;
private Button cadastrar;
@Override
protected void onCreate(Bundle savedInstanceState) {
//setTheme(Principal.THEME); //Used for theme switching in samples
super.onCreate(savedInstanceState);
setContentView(R.layout.home);
entrar = (Button)findViewById(R.id.entrar);
entrar.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
startActivity(new Intent(Principal.this,LoginActivity.class));
finish();
}
});
cadastrar = (Button)findViewById(R.id.cadastrar_home);
cadastrar.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
Intent intent = new Intent(Principal.this, RegisterActivity.class);
startActivity(intent);
//finish();
}
});
}
public class RegisterActivity extends SherlockActivity{
protected void onCreate(Bundle savedInstanceState) {
setTheme(Principal.THEME); //Used for theme switching in samples
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId())
{
case android.R.id.home:
// Do whatever you want, e.g. finish()
Intent intent = new Intent(this, Principal.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
break;
}
return true;
}
}
已经尝试了很多方法,但都不起作用,只有finish() 在第二个活动中,只需删除您的意图和startActivity内容。只需:
case android.R.id.home:
finish();
break;
finish()将从后台堆栈中删除该活动,因此在启动新活动时不要使用它,您希望用户通过按“后退”按钮返回该活动。在第二个活动中,只需删除您的意图和startActivity内容即可。只需:
case android.R.id.home:
finish();
break;
finish()将从后堆栈中删除该活动,因此在启动希望用户通过按back按钮返回的新活动时不要使用它。如果不希望从
SecondActivity
重新启动主体活动,只希望第二个活动完成并返回到上一个活动。尝试在SecondActivity
--
使用just
finish()
时,您不想从SecondActivity
重新启动您的主要活动,您只希望第二个活动完成并返回到上一个活动。尝试在SecondActivity
--
只需
finish()
谢谢,也谢谢你的答案。谢谢,也谢谢你的答案。