RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 591564
Accepted
Masquitos
Masquitos
Asked:2020-11-16 15:22:33 +0000 UTC2020-11-16 15:22:33 +0000 UTC 2020-11-16 15:22:33 +0000 UTC

谁在 Activity 中调用公共方法?

  • 772

你能告诉我公共方法在Android中是如何调用的吗?我不明白。如果你读过关于java的文献,那么方法必须通过一个对象来调用,例如“object.method”。但是在android中,只描述公共方法就足够了,它会被自己调用,如下面的例子所示。你能告诉我是谁调用了这个方法onCreateOptionsMenu吗?这个方法的调用在哪里指定?他为什么自愿?在哪里阅读它?

public class MainActivity extends Activity 
{


    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }

    public boolean onCreateOptionsMenu(Menu menu)
    {
        // TODO Auto-generated method stub
        menu.add("menu1");
        menu.add("menu2");
        menu.add("menu3");
        menu.add("menu4");

        return super.onCreateOptionsMenu(menu);
   } 
} 
android
  • 4 4 个回答
  • 10 Views

4 个回答

  • Voted
  1. DEADMC
    2020-11-16T15:59:17Z2020-11-16T15:59:17Z

    这实际上是一个很好的问题,因为它并不完全显而易见,即使您阅读了生命周期Activity。

    所以,简而言之:发生的第一件事是对象被创建Activity。在这种情况下,只有它的构造函数被处理,没有别的:

    Activity activity = new Activity();
    

    但通常没有人以这种形式创建对象。相反,一切都会通过Intent:

    Intent intent = new Intent(previousActivity, Activity.class);
    startActivity(intent);
    

    如果没有前一个Activity(在本例中previousActivity),那么系统只是启动选定的 Activity.class,实际上也是通过 Intent。

    只有在startActivity(intent)方法被处理之后onCreate(Bundle savedInstanceState),即 换句话说,正是这个startActivity本质上启动了它。事实上,链条有点长:

    startActivity -> create() -> onCreate()

    实际上,开发者无权访问create()方法,甚至可以调用不同的方法,无论如何,这个方法创建一个Activity并启动callback onCreate;

    此外,一旦它onCreate工作,它就会启动callback,这又会启动 start() 方法,它会启动callback onStart,onStart然后会启动callback,它会启动 resume() ,然后callback onResume starts 。

    onCreateOptionsMenu一切都不是那么明显,因为启动在不同版本的 Android 中看起来不同。故意省略旧版本,我们可以肯定地说,根据文档,对于 Android 3.0+,它在 Activity 启动时启动,即 在 start() 方法中按应用栏元素显示的顺序(通常支持用作应用栏Toolbar)

    • 3
  2. Best Answer
    pavlofff
    2020-11-16T15:45:19Z2020-11-16T15:45:19Z

    这些是系统回调方法(回调方法,通常由方法名称中的on-前缀表示)。当某些系统事件发生时,它们被系统调用。

    例如,onCreateOptionsMenu()当应用程序需要创建菜单时由系统调用(按下系统菜单按钮时调用)。

    会发生以下情况:当应用程序需要显示菜单时,系统开始执行某些操作,其中一个阶段会触发回调onCreateOptionsMenu(),这里应用程序程序员可以输入自己的代码,该代码将按比例执行使用系统一,在创建菜单时,通常确定该菜单将包含的内容(项目)

    另请参阅系统回调的此答案。您还可以阅读您能找到的所有内容,活动生命周期、系统回调和任何有关 Android 开发的书籍,其中对所有这些内容都有一些详细说明。我可以推荐 B. Hardy 的书“Android. Programming for professionals” - 2016,第 2 版

    • 1
  3. Maxim Bondarenko
    2020-11-16T15:30:42Z2020-11-16T15:30:42Z

    阅读有关 Activity 生命周期的信息。据我了解 onCreateOptionsMenu(Menu menu) 在创建活动时自动调用。以及许多其他功能。去 startandroid.ru/ 有很多有用的东西。

    • 0
  4. portasynthinca3
    2020-11-16T15:37:08Z2020-11-16T15:37:08Z

    您的 MainActivity 类是 Activity 类的扩展。Activity 是一个屏幕,类似于 Windows 中的表单。例如,您当前使用的浏览器。该方法onCreate在应用程序启动时由 Android 系统调用。onCreateOptionMenu由负责显示所有内容的类调用。

    • 0

相关问题

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    如何停止编写糟糕的代码?

    • 3 个回答
  • Marko Smith

    onCreateView 方法重构

    • 1 个回答
  • Marko Smith

    通用还是非通用

    • 2 个回答
  • Marko Smith

    如何访问 jQuery 中的列

    • 1 个回答
  • Marko Smith

    *.tga 文件的组重命名(3620 个)

    • 1 个回答
  • Marko Smith

    内存分配列表C#

    • 1 个回答
  • Marko Smith

    常规赛适度贪婪

    • 1 个回答
  • Marko Smith

    如何制作自己的自动完成/自动更正?

    • 1 个回答
  • Marko Smith

    选择斐波那契数列

    • 2 个回答
  • Marko Smith

    所有 API 版本中的通用权限代码

    • 2 个回答
  • Martin Hope
    jfs *(星号)和 ** 双星号在 Python 中是什么意思? 2020-11-23 05:07:40 +0000 UTC
  • Martin Hope
    hwak 哪个孩子调用了父母的静态方法?还是不可能完成的任务? 2020-11-18 16:30:55 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    Arch ArrayList 与 LinkedList 的区别? 2020-09-20 02:42:49 +0000 UTC
  • Martin Hope
    iluxa1810 哪个更正确使用:if () 或 try-catch? 2020-08-23 18:56:13 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5