在我的应用程序中,我遇到了这样一个问题:只有当按下两次后退按钮时,活动(例如:Activity_B)才会关闭。我希望在按下后退按钮一次后关闭Activity_B,然后在后面显示Activity_A。
我试过这段代码:
public override void OnBackPressed()
{
base.OnBackPressed();
//MoveTaskToBack(true);
this.Finish();
Finish();
FinishAndRemoveTask();
}
但行为仍然相同。 我尝试调试调试器点,看看它的行为方式。 按下后退按钮时会调用Activity_B。
启动Activity_B的代码是:
private void OnDataLayout_Click(object sender, EventArgs e)
{
Intent intent = new Intent(this, typeof(Activity_B));
StartActivity(intent);
}
非常感谢任何帮助。
Update1:我发现OnDataLayout_Click事件也被调用了两次,在导航到Activity_B的OnCreate()后,OnCreate()也被调用了两次。
答案 0 :(得分:0)
如果您想从Activity A
Activity B
返回onBackpressed
,则无需为backpressed
编写任何代码,但如果您想退出Backprssed { {1}} {}未转到Activity B
,您需要Activity A
finish()
答案 1 :(得分:0)
OnDataLayout_Click事件也被调用两次
如果您的Button的点击事件被绑定了两次,则点击事件将被调用两次。
如下面的代码:
public class MainActivity : AppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
initView();
}
protected override void OnResume()
{
base.OnResume();
initView();
}
private void initView()
{
Button bt = FindViewById<Button>(Resource.Id.bt);
bt.Click += Bt_Click;
}
private void Bt_Click(object sender, System.EventArgs e)
{
Intent intent = new Intent(this, typeof(Activity1));
StartActivity(intent);
}
}
initView
方法被调用了两次,OnCreate
和OnResume
方法。这将导致您的问题。
但是,如果你使用SetOnClickListener
方法,问题就会消失:
public class MainActivity : AppCompatActivity,View.IOnClickListener
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.activity_main);
initView();
}
protected override void OnResume()
{
base.OnResume();
initView();
}
private void initView()
{
Button bt = FindViewById<Button>(Resource.Id.bt);
bt.SetOnClickListener(this);
}
public void OnClick(View v)
{
Intent intent = new Intent(this, typeof(Activity1));
StartActivity(intent);
}
}