在 android 期间在 Kivy 进行多项活动
Having multiple activities in Kivy for android
如您所知,Android 中的活动之间的切换是通过实例化 Intent 并启动它来完成的。像
Intent i = new Intent(ThisActivity.this, AnotherActivity.class);
startActivity(i);
当 Intent 启动时,这从 ThisActivity
变为 AnotherActivity
。
如果您在 AnotherActivity
,按下 android 设备的 'Back' 按钮 returns,您将回到之前的 Activity(ThisActivity
)。如何在 Kivy 中实现这种行为?
我使用 Screen
和 ScreenManager
在不同页面之间显示和导航,但按 'Back' 按钮退出应用程序。正如我在尝试从 kivy 应用程序制作 apk 时在 buildozer
日志中观察到的那样,
Starting: Intent { act=org.renpy.android.PythonActivity cmp=org.test.community/org.renpy.android.PythonActivity }
似乎只创建了一个名为 PythonActivity 的 Activity。是否可以在 Kivy 中创建多个活动或具有类似的 android Activity 导航体验?
我们在 pyjnius 的帮助下完成了这项工作。以下代码说明了地图意图并回答了您的查询。
from jnius import cast
from jnius import autoclass
# import the needed Java class
PythonActivity = autoclass('org.kivy.android.PythonActivity')
Intent = autoclass('android.content.Intent')
Uri = autoclass('android.net.Uri')
# create the intent
mapintent = Intent()
mapintent.setAction(Intent.ACTION_VIEW)
msg = "Delhi"
mapintent.setData(Uri.parse("geo:0,0?q="+msg))
currentActivity = cast('android.app.Activity', PythonActivity.mActivity)
currentActivity.startActivity(mapintent)
您会找到更多示例here
如您所知,Android 中的活动之间的切换是通过实例化 Intent 并启动它来完成的。像
Intent i = new Intent(ThisActivity.this, AnotherActivity.class);
startActivity(i);
当 Intent 启动时,这从 ThisActivity
变为 AnotherActivity
。
如果您在 AnotherActivity
,按下 android 设备的 'Back' 按钮 returns,您将回到之前的 Activity(ThisActivity
)。如何在 Kivy 中实现这种行为?
我使用 Screen
和 ScreenManager
在不同页面之间显示和导航,但按 'Back' 按钮退出应用程序。正如我在尝试从 kivy 应用程序制作 apk 时在 buildozer
日志中观察到的那样,
Starting: Intent { act=org.renpy.android.PythonActivity cmp=org.test.community/org.renpy.android.PythonActivity }
似乎只创建了一个名为 PythonActivity 的 Activity。是否可以在 Kivy 中创建多个活动或具有类似的 android Activity 导航体验?
我们在 pyjnius 的帮助下完成了这项工作。以下代码说明了地图意图并回答了您的查询。
from jnius import cast
from jnius import autoclass
# import the needed Java class
PythonActivity = autoclass('org.kivy.android.PythonActivity')
Intent = autoclass('android.content.Intent')
Uri = autoclass('android.net.Uri')
# create the intent
mapintent = Intent()
mapintent.setAction(Intent.ACTION_VIEW)
msg = "Delhi"
mapintent.setData(Uri.parse("geo:0,0?q="+msg))
currentActivity = cast('android.app.Activity', PythonActivity.mActivity)
currentActivity.startActivity(mapintent)
您会找到更多示例here