Разница между методом getcontext и методом getactivity

  1. MainActivity.this: указывает объект MainActivity, который обычно используется во внутреннем классе для обозначения внешнего this.Если this используется непосредственно во внутреннем классе, он указывает на сам внутренний класс. Поскольку MainActivity наследует Activity, а Activity наследует Context, его также можно использовать для предоставления контекста Activity;
  2. this: Указывает текущий объект; вообще говоря, в каком классе он вызывается, он указывает на объект.
  3. getContext(): это метод, предоставляемый в классе View. Его можно вызывать только в классе, наследующем View. Он возвращает
    контекст действия, в котором запущено текущее представление.
  4. getActivity(): получить объект Activity, к которому прикреплен фрагмент. Причина, по которой getActivity() во фрагменте не рекомендуется, заключается в следующем: этот метод вернет действие, прикрепленное к текущему фрагменту.Когда жизненный цикл фрагмента заканчивается и уничтожается, getActivity() возвращает значение null, поэтому обратите внимание на оценку значения null или захват при использовании исключения нулевого указателя. GetActivity обычно используется для получения контекста во фрагменте.

Глобальное приложение:

public class Application extends Application {
    
    
 
    private static Application instance;
 
    @Override
    public void onCreate() {
    
    
        super.onCreate();
        instance = this;
    }
 
    public static Application getInstance(){
    
    
        return instance;
    }
 
 
}

Использование метода getContext непосредственно во фрагменте подвержено исключениям нулевого указателя, переопределяя метод getContext.

private Activity activity;
 
public Context getContext() {
    
    
    activity = getActivity();
    if (activity == null) {
    
    
        return HSApplication.getInstance();
    }
 
    return activity;
}

Контекст диалога не может использовать глобальное приложение

Intent intent=new Intent(); intent.setClass(this, 目标activity.class); startActivity(intent)

Guess you like

Origin blog.csdn.net/weixin_52110757/article/details/126313019