上下文包含什么?

时间:2018-06-18 09:57:56

标签: android android-context

我是Android的新手,我已阅读Android文档中的上下文以及下面给出的链接

What is 'Context' on Android?

如果假设我有一个类并且它包含一些方法,例如考虑下面给出的代码片段。

Sample1.java

implementation 'com.android.support:appcompat-v7:28.0.0-alpha1'

Sample2.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()
    {
        //...
    }
}

如果怀疑是错误的,请原谅我。我想了解基础知识。任何帮助都会很明显,并提前感谢。

5 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

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

上下文的典型用法:

创建新对象:创建新视图,适配器,监听器:

TextView tv = new TextView(getContext()); ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(),...); 访问标准公共资源:LAYOUT_INFLATER_SERVICE,SharedPreferences:

等服务

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

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

答案 3 :(得分:0)

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

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
    }
}

答案 4 :(得分:-1)

是的,你可以。请考虑下面的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;
    }
}