避免半透明活动听取onBackPressed

时间:2017-10-01 12:06:00

标签: android android-activity android-theme

我有一个主题为@style/Theme.AppCompat.NoActionBar.Translucent

的半透明活动

由于此Activity完全透明,因此用户不知道Activity存在。因此,当用户按下后退按钮时,默认行为应该是用户最后一次Activity,应该采取后退按钮事件。

但是在这里,当半透明活动位于顶部时,它会占用该事件,并且用户看起来后退按钮在第一次尝试时不起作用。有没有办法可以在onBackPressed()之后几毫秒发送一个返回键事件,或者我可以设置我的Activity根本不听重要事件?有一些像FLAG_NOT_TOUCHABLE这样的标志告诉应用程序不想被触摸,但这对我的后退按钮不起作用。

请不要建议我使用Service,因为我绝对有必要使用Activity,它也应该是透明的。

1 个答案:

答案 0 :(得分:0)

您可以使用Books$title <- c("To kill a mockingbird", "Harry Potter and the order of the phoenix", "Of mice and men (something something)") Book$year <- c("1960", "2003", "1937") title year To kill a mockingbird 1960 Harry Potter and the order of the phoenix 2003 Of mice and men (something something) 1937 启动半透明活动,然后覆盖半透明活动中的startActivityForResult()功能。所以你可以继续这样做。

在您的MainActivity或调用活动中,启动这样的半透明活动。

onBackPressed

并像这样覆盖private static final int TRANSLUCENT_ACTIVITY = 101; Intent intent = new Intent(getActivity(), YourTranslucentActivity.class); startActivityForResult(intent, TRANSLUCENT_ACTIVITY);

onActivityResult

现在在半透明活动中,您需要像这样覆盖@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_OK && requestCode == RETURNED_FROM_TRANSLUCENT_ACTIVITY) { // Call the backPressed function in your calling Activity super.onBackPressed(); } }

onBackPressed

因此,诀窍不是避免使用后退功能,而是采用另一种方式来完全按照您的预期行事。

希望有所帮助。