【问题标题】:what does a context contain?上下文包含什么?
【发布时间】:2018-06-18 09:57:56
【问题描述】:

我是 android 新手,我已经阅读了 Android 文档和下面给出的链接中的上下文,

What is 'Context' on Android?

如果假设我有一个类并且其中包含一些方法,例如考虑下面给出的代码 sn-p。

Sample1.java

class Sample1 extends AppCompatActivity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user_login);

        Sample2.function1(Sample1.this);
    }
    public void func1()
    {
        //...
    }
    public void func2()
    {
        //...
    }
    public void func3()
    {
        //...
    }
}

Sample2.java

class Sample2 extends AppCompatActivity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_user_login);
    }
    public static void function1(Context context){
        //can I access all the public methods present in sample1 class
    }
}

如果怀疑是错误的,请原谅我。我正在尝试了解基础知识。任何帮助将不胜感激,并在此先感谢。

【问题讨论】:

  • 你不能在另一个活动中调用方法,活动是用户可见的视图,如果你想显示一个活动或从另一个活动中获取一些数据,你必须使用意图,所以请阅读这个:link
  • 感谢您的上述指导,给定的链接帮助我了解了如何将数据从一项活动传递到另一项活动。

标签: android android-context


【解决方案1】:

是的,即使您使用默认的 java 类,您也可以这样做,然后您也可以将该类的函数调用到另一个活动中。如果您使用关键字 static,则不会发生冲突。

【讨论】:

    【解决方案2】:

    不可能,你不能这样做,因为在静态方法中,你只能调用另一个静态方法,

    【讨论】:

    • 如果Sample1类中的func1()、func2()、func3()方法都是静态方法,是否可以在Sample2类的方法function1(Context context)中调用。
    【解决方案3】:

    顾名思义,它是应用程序/对象当前状态的上下文。它让新创建的对象了解正在发生的事情。通常,您调用它是为了获取有关程序另一部分(活动和包/应用程序)的信息。

    您可以通过调用 getApplicationContext()、getContext()、getBaseContext() 或 this 来获取上下文(在从 Context 扩展的类中,例如 Application、Activity、Service 和 IntentService 类)。

    上下文的典型用法:

    创建新对象:创建新视图、适配器、侦听器:

    TextView tv = new TextView(getContext()); ListAdapter 适配器 = new SimpleCursorAdapter(getApplicationContext(), ...); 访问标准公共资源:LAYOUT_INFLATER_SERVICE、SharedPreferences 等服务:

    context.getSystemService(LAYOUT_INFLATER_SERVICE) getApplicationContext().getSharedPreferences(name, mode); 隐式访问组件:关于内容提供者、广播、意图

    getApplicationContext().getContentResolver().query(uri, ...);

    【讨论】:

      【解决方案4】:

      如果两者都是静态函数,那么有可能,静态方法在子类中被继承,但它不是多态性。

      class Sample1 extends AppCompatActivity {
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_user_login);
      
              Sample2.function1(Sample1.this);
          }
          public static void func1()
          {
              //...
          }
          public static void func2()
          {
              //...
          }
          public staic void func3()
          {
              //...
          }
      }
      
      after that you use `enter code here`
      
      class Sample2 extends AppCompatActivity {
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_user_login);
          }
          public static void function1(Context context){
              //can I access all the public methods present in sample1 class
          }
      }
      

      【讨论】:

        【解决方案5】:

        是的,你可以。考虑一下您的 Sample2.java 文件。

        class Sample2 extends AppCompatActivity {
            public static Sample2 sample2;
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_user_login);
                sample2 = this;
            }
            public static Sample2 function1(Context context){
                //can I access all the public methods present in sample1 class
                return sample2;
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-04-17
          • 2017-10-24
          • 2012-09-15
          • 2014-11-12
          • 2011-01-04
          • 2012-01-07
          • 2014-10-15
          相关资源
          最近更新 更多