java– 不使用super.oncreate()停止循环并扩展MainActivity

java– 不使用super.oncreate()停止循环并扩展MainActivity,第1张

概述我从MainActivity扩展了一个“Login”类.MainActivity看起来像这样:publicclassMainActivityextendsFragmentActivity{/**Calledwhentheactivityisfirstcreated.*/privatestaticStringTAG="MainActivity";@OverridepublicvoidonCreate(BundlesavedIns

我从MainActivity扩展了一个“Login”类.

MainActivity看起来像这样:

 public class MainActivity extends FragmentActivity {/** Called when the activity is first created. */private static String TAG = "MainActivity";@OverrIDepublic voID onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    //setContentVIEw(R.layout.main);    Intent login_activity = new Intent(this, Login.class);    startActivity(login_activity);    Log.d(TAG,"Login created");}}

在login.class中我只是调用布局:

public class Login extends MainActivity {@OverrIDepublic voID onCreate(Bundle savedInstanceState) {    //super.onCreate(savedInstanceState);    setContentVIEw(R.layout.login);     }}

你可以看到,我在登录类中注释掉了“super.oncreate”.再次调用MainActivitys oncreate是没有意义的.但是这个超级评论超级创建我会得到一些例外:

12-31 11:37:47.688: E/AndroIDRuntime(4206): FATAL EXCEPTION: main12-31 11:37:47.688: E/AndroIDRuntime(4206): androID.app.SuperNotCalledException: Activity {de.svennergr.htn/de.svennergr.htn.Login} dID not call through to super.onCreate()12-31 11:37:47.688: E/AndroIDRuntime(4206):     at androID.app.ActivityThread.performlaunchActivity(ActivityThread.java:2146)12-31 11:37:47.688: E/AndroIDRuntime(4206):     at androID.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)12-31 11:37:47.688: E/AndroIDRuntime(4206):     at androID.app.ActivityThread.access0(ActivityThread.java:141)12-31 11:37:47.688: E/AndroIDRuntime(4206):     at androID.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)12-31 11:37:47.688: E/AndroIDRuntime(4206):     at androID.os.Handler.dispatchMessage(Handler.java:99)12-31 11:37:47.688: E/AndroIDRuntime(4206):     at androID.os.Looper.loop(Looper.java:137)12-31 11:37:47.688: E/AndroIDRuntime(4206):     at androID.app.ActivityThread.main(ActivityThread.java:5039)12-31 11:37:47.688: E/AndroIDRuntime(4206):     at java.lang.reflect.Method.invokeNative(Native Method)12-31 11:37:47.688: E/AndroIDRuntime(4206):     at java.lang.reflect.Method.invoke(Method.java:511)12-31 11:37:47.688: E/AndroIDRuntime(4206):     at com.androID.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)12-31 11:37:47.688: E/AndroIDRuntime(4206):     at com.androID.internal.os.ZygoteInit.main(ZygoteInit.java:560)12-31 11:37:47.688: E/AndroIDRuntime(4206):     at dalvik.system.NativeStart.main(Native Method)

当我不评论super.oncreate时,我会得到一个不停止循环创建大量“登录”对象/活动.

我该如何解决这个问题?

解决方法:

在AndroID中,您必须遵守活动的生命周期.每次覆盖生命周期方法时,都必须调用super以确保与活动生命周期保持一致.

这里的要点不是调用MainActivity.onCreate而是调用Activity.onCreate.如果您不想从LoginActivity中继承MainActivity的行为,则不要从中扩展.也许您需要一个中间父公共父类来仅对所需行为进行分组.

总结

以上是内存溢出为你收集整理的java – 不使用super.oncreate()停止循环并扩展MainActivity全部内容,希望文章能够帮你解决java – 不使用super.oncreate()停止循环并扩展MainActivity所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1110076.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存