gpt4 book ai didi

java - 从扩展 Application 的另一个类调用 Activity 中的方法

转载 作者:行者123 更新时间:2023-12-01 16:13:06 25 4
gpt4 key购买 nike

您好,我正在尝试从另一个名为 Startup 的类调用 MainActivity 中的此方法,该类扩展了 Application,以便每次应用程序启动时都可以加载:

有人可以告诉我该怎么做吗?我已经阅读了很多答案,但我还没有看到任何具有扩展应用程序的类的问题,我认为这导致了问题。我看到的所有答案都是关于如何从扩展 Activity 的另一个类调用方法:/

这是mainActivity中的方法:

 public void showPinLayout() {

//if initialize in oncreate will cause nullpointer error
indicatorDots = (IndicatorDots) findViewById(R.id.indicator_dotsMain);
pinLockView = (PinLockView) findViewById(R.id.pinlockviewMain);
pinLockView.attachIndicatorDots(indicatorDots);
...
}

这是扩展Application的Startup类,并已在 list 中初始化:

<application
android:name=".Startup" ...>
public class Startup extends Application {

@Override
public void onCreate() {
super.onCreate();

Toast.makeText(this, "Startup", Toast.LENGTH_SHORT).show();

MainActivity mainActivity = new MainActivity();
mainActivity.showPinLayout();
}
}

最佳答案

我建议做一些事情,比如让MainActivity启动,并在MainActivityonCreate中调用Startup<中的方法/strong> 类来初始化某些方法。原因是您不知道 Activity 将在什么时间初始化,因此请等待它,然后在 Lifecycle 回调中根据需要初始化某些方法。

例如。

public class Startup extends Application {

@Override
public void onCreate() {
super.onCreate();

Toast.makeText(this, "Startup", Toast.LENGTH_SHORT).show();


}

public void initMain(Context context){
((MainActivity)context).showPinLayout();
}

}

并在 MainActivity 中执行类似的操作。

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//just before showing the UI, call the application class method to initialize some method if needed
((Startup)getApplicationContext()).initMain(this);
}

关于java - 从扩展 Application 的另一个类调用 Activity 中的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62483194/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com