【问题标题】:Is it possible to call class which extends Application android?是否可以调用扩展应用程序 android 的类?
【发布时间】:2012-04-26 12:23:31
【问题描述】:

我有一个扩展应用程序的类,我想从代码中调用它,它有

@Override
public void onCreate() 

我需要从 Activity 中调用它。我知道如何在应用启动时调用它,因为我需要将其包含在清单中:

 android:name=""

谢谢。

【问题讨论】:

    标签: android


    【解决方案1】:

    您应该避免手动调用应用程序 onCreate,因为如果配置正确,它将自动启动。但是,如果您想从覆盖的应用程序中调用方法,您可以这样做:

    public class MyApplication extends Application{
        public void someMethod(){}
    }
    

    然后在任何 Activity 中:

    MyApplication app = (MyApplication)getApplication()
    app.someMethod();
    

    【讨论】:

    • 我得到这个异常 java.lang.ClassCastException: android.app.Application
    • 那么您没有在 Manifest 中注册您的应用程序
    • 那么您可以尝试在 Projetcs 清单中声明您的 Library Application.class。不确定这会起作用,但至少它适用于活动。也看看这个:stackoverflow.com/questions/9499044/…
    • 你的意思是这个类 MyApplication 是在我的项目中声明的图书馆项目,它使用像这样的图书馆清单 android:name="MyApplication" 是的,比这不起作用:)
    • @Streetboy 您应该使用应用程序的完全限定名称,而不仅仅是类名称
    【解决方案2】:

    试试这个:

    public class YourApplication extends Application 
    {     
         public void sayHello {
            System.out.println("Hello")
        }
    }
    

    然后在任何活动中调用它:

    YourApplication appState = ((YourApplication)this.getApplication());
    appState.sayHello();
    

    【讨论】:

      【解决方案3】:

      应用程序类onCreate() 在应用程序启动时被调用。如果你想调用你在 Application 类中声明的方法,你可以这样调用它,

      ((Application_Class_Name)getApplicationContext()).calling_method();
      

      从任何其他扩展 Activity 的类,否则您必须使用上下文来获取 getApplicationContext() 的实例以从非 Activity 类调用。

      例如-如果你想从Adapter类调用它,你需要将Activity的上下文传递给adapter类并获取Application的实例,

      ((Application_Class_Name)mContext.getApplicationContext()).calling_method();
      

      【讨论】:

        【解决方案4】:

        从Activity,您只需致电((YourAppName)getApplicationContext())。

        而且,您的Application 中不需要onCreate()(除非您知道自己需要)。您可以在那里设置一些方法,然后使用例如调用它们((YourAppName)getApplicationContext()).myMethod()。只要它的任何 Activity 存在,您的应用就一直存在。

        【讨论】:

        • 你确定getApplicationContext() 返回的结果与getApplication 相同吗?
        • 说实话我从来没有听说过 getApplication()。我在我的应用程序中使用 getApplicationContext(),它就像一个魅力。顺便说一句,出现了很多答案;)
        【解决方案5】:

        您不应该自己调用onCreate() 方法...Android 会为您完成...此类的主要目的是保持全局变量对整个应用程序的通用性,因为Application 本身是一个实例。 ..

        它可以让你覆盖onCreate(),因为你可能需要在操作系统创建的应用程序/活动中自定义东西..

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多