标签: oncreate

为什么Bundle对象在onCreate()上始终为null?

我正在尝试进入Android编程,因为我从一本书中拿了一些例子.在这些示例中要求输入以下代码:

public class ExemploCicloVida extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        Log.i(TAG, getClassName() + " onCreate() called on: " + icicle);

        TextView t = new TextView(this);
        t.setText("Exemplo de ciclo de vida de uma Activity.\nConsulte os logs no LogCat");
        setContentView(t);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道为什么Bundle对象在这种情况下总是为null.

android bundle oncreate

8
推荐指数
2
解决办法
2万
查看次数

将全屏设置为onCreate

我只能在onCreate方法中设置我的活动到全屏(在setContentView之前)?

有没有什么方法可以在onCreate之外设置为全屏?

谢谢

android screen fullscreen oncreate

8
推荐指数
1
解决办法
4403
查看次数

空活动的setContentView上的StrictMode磁盘读取违规

我最近尝试使用StrictMode但有一个奇怪的侵犯,所以我尝试建立一个新的 "空活动"项目(在Android Studio),并添加如下(中记载的应用程序类在这里):

public class TestApplication extends Application {

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

    }

    private void setStrictMode() {
        if (BuildConfig.DEBUG) {
            StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
                    .detectAll()
                    .penaltyLog()
                    .build());
            StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
                    .detectLeakedSqlLiteObjects()
                    .detectLeakedClosableObjects()
                    .penaltyLog()
                    .penaltyDeath()
                    .build());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在这个空项目中遇到同样的问题:
StrictMode policy violation; ~duration=165 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=65599 violation=2

堆:

at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1440)
at java.io.UnixFileSystem.getBooleanAttributes(UnixFileSystem.java:241)
at java.io.File.isDirectory(File.java:837)
at dalvik.system.DexPathList$Element.toString(DexPathList.java:634)
at java.lang.String.valueOf(String.java:2827)
at java.util.Arrays.toString(Arrays.java:4511)
at dalvik.system.DexPathList.toString(DexPathList.java:194)
at java.lang.String.valueOf(String.java:2827)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:126)
at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
at android.view.LayoutInflater.createView(LayoutInflater.java:606) …
Run Code Online (Sandbox Code Playgroud)

android oncreate android-instant-run android-strictmode

8
推荐指数
1
解决办法
839
查看次数

Crashlytics 崩溃报告提到 XposedBridge

我昨天发布了一个 Android 应用程序的更新,今天我在 Crashlytics 中看到了一些崩溃日志:

   Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.myapp/com.example.myapp.MyWebViewActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665)
          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
          at android.app.ActivityThread.-wrap12(ActivityThread.java)
          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
          at android.os.Handler.dispatchMessage(Handler.java:102)
          at android.os.Looper.loop(Looper.java:154)
          at android.app.ActivityThread.main(ActivityThread.java:6119)
          at java.lang.reflect.Method.invoke(Method.java)
          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
          at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:107)

   Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
          at com.example.myapp.MyWebViewActivity.onCreate(MyWebViewActivity.java:77)
          at android.app.Activity.performCreate(Activity.java:6679)
          at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)
          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618)
          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)
          at android.app.ActivityThread.-wrap12(ActivityThread.java)
          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)
          at android.os.Handler.dispatchMessage(Handler.java:102)
          at …
Run Code Online (Sandbox Code Playgroud)

android android-intent oncreate crashlytics xposed

8
推荐指数
1
解决办法
1517
查看次数

getExtras(name).getString和getIntent()之间的区别.getStringExtra(name)

我的Android应用程序上有一些错误报告,它是一个活动中onCreate()的Nullpointerexception. 失败的代码是getIntent().getExtras().getStringExtra("name").(空指针异常)

这意味着getExtras()以某种方式为null.我确信我在创建意图的每个地方都设置了额外的意图.我无法在设备上的模拟器上重新创建它.在我尝试再次打开应用程序之后,我认为它发生在我的真实设备上(但不是在我调试时),同时Android可能会杀死进程并再次重新创建活动.但是,即使在这种情况下,也不应该保留额外的意图吗?

我试图在模拟器上终止进程,再次调用onCreate并且getExtras()返回正确的值.

我用getIntent().getStringExtra()替换了代码.除了它之外还有什么区别不会抛出nullpointerexception,但仍会将String设置为null.还有其他区别吗?

可能是什么原因造成的?

android bundle nullpointerexception android-intent oncreate

7
推荐指数
2
解决办法
6891
查看次数

如何在Android上运行代码在Android中打开?

我的Android应用需要用户创建一个帐户才能使用该应用.帐户信息存储在SQLite数据库中.当应用程序启动时,我会检查用户是否有帐户,如果没有,我会为用户显示注册活动.

现在,我收到用户的报告,即使他们已经创建了帐户,他们有时也会参与注册活动.当他们关闭应用程序并再次重新打开它时会发生这种情况.

这是我正在使用的代码,我需要弄清楚问题可能是什么:

//MyApplication.java
public class MyApplication extends Application {
    private DataBaseUtility dbu;
    public boolean hasAccount;  

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

        //Init sqlite database
        this.dbu = new DataBaseUtility(this);

        //This loads the account data from the database and returns true if the user has already created an account
        this.hasAccount = loadAccount();
    }

    public boolean loadAccount() {
        boolean loadedData = false;

        String query = "SELECT data FROM tblaccount WHERE tblaccount.deleted=0";
        Cursor cursor = this.dbu.getCursor(query);
        if (cursor != null) {
            while (cursor.moveToNext()) …
Run Code Online (Sandbox Code Playgroud)

android oncreate

7
推荐指数
1
解决办法
2843
查看次数

Android:仅在onCreate中使用getIntent()?

在Android(目标API 14-16)中,我有一个MainActivity和一个NextActivity.如果在块内部调用方法,则使用Intent NextActivity从内部开始是没有困难的:MainActivitygetIntent()onCreate()NextActivity

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        int data = 7;
        ...
        Intent intent = new Intent(this, NextActivity.class);
        intent.putExtra("data", data);
        startActivity(intent);
        }
    }

public class NextActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        final int data = this.getIntent().getIntExtra("data", 7);
        ...
        }
    ...
    }
Run Code Online (Sandbox Code Playgroud)

但是,由于该字段data在匿名("内部")类中使用NextActivity,我被迫声明它final.

我不想声明字段final,如果我在开始之前在类的开头声明它们,我通常可以避免这样做onCreate().但由于某种原因,NextActivity如果getIntent()语句出现(没有 …

android android-intent oncreate

7
推荐指数
1
解决办法
2万
查看次数

Android - 活动onCreate和Fragment onCreate

我还是Android编程的新手,所以这个问题很基础.我在Internet上看到许多代码示例,其中UI组件(如a TextView)正在初始化并在onCreate()Activity 的方法中访问.

当我使用Android Studio来创建一个新的项目- FirstApp-使用默认设置,一个空白的活动叫做MainActivity带来与它一起activity_mainfragment_main,我可以马上编译此为APK,部署我的设备上,我也得到一个屏幕,标题" FirstApp"和左上角的TextView显示"Hello world!".

如果我给出TextView一个ID textview1,并创建一个成员变量,TextView myTextView;那么我可以onCreate()在Activity 的方法中引用它,就像这样(当然没有编译器错误):

    @Override
    protected void onCreate (Bundle savedInstanceState)
    {
        super.onCreate (savedInstanceState);
        setContentView (R.layout.activity_main);
        myTextView = (TextView) findViewById (R.id.textview1);
        myTextView.setText ("Hello tablet!");

        if (savedInstanceState == null)
        {
            getSupportFragmentManager().beginTransaction().add (R.id.container,new PlaceholderFragment()).commit();
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是,如果我编译并运行APK,则会导致"不幸的是,FirstApp已停止".信息.

我以前通过将访问UI组件的启动代码移动到onStart()Activity 的方法中解决了这个问题,如下所示:

    @Override
    protected void onStart()
    {
        super.onStart();
        myTextView = (TextView) findViewById (R.id.textview1);
        myTextView.setText ("Hello tablet!");
    }
Run Code Online (Sandbox Code Playgroud)

这将导致一个工作的APK在左上角显示一个单独的TextView显示"Hello平板电脑!" - …

android onstart oncreate android-fragments

7
推荐指数
1
解决办法
1万
查看次数

使用内容提供商时重新创建数据库

我的Android应用程序有一个SQLite数据库和一个内容提供程序.此内容提供商已在应用程序中注册AndroidManifest.xml.它不会导出,所以只有我的应用才能看到它.

作为重置用户配置文件的一部分,我想彻底擦除此数据库并从头开始重新创建它.起初我尝试deleteDatabase()从活动的上下文中调用.这有效,但仅在应用程序关闭后重新打开.否则,当我尝试插入表示数据库是只读的行时,它将崩溃.我的理解是在呼叫之前需要先关闭连接deleteDatabase().然而,据我所知,连接由内容提供商管理,不应手动关闭.

作为替代方案,我使用调用自定义函数的call()方法来ContentResolver删除表中的所有数据并手动重置序列计数.

这是有效的,但现在我必须手动删除每个表中的数据,并且必须跟踪我将来做出的任何更改.

是否有更好的方法来删除整个数据库并在使用时使用onCreate()my DatabaseHelper(SQLiteOpenHelper)触发器ContentProvider

sqlite android recreate oncreate android-contentprovider

7
推荐指数
1
解决办法
325
查看次数

在onCreate()中没有调用日志语句

我的调试方法中有一系列Log语句onCreate(),但有时它们不会打印在我的方法中LogCat.有没有人知道的任何理由?

也许我误解了活动生命周期的基础知识.我访问了开发人员的页面,但它仍然没有意义.

让我澄清一下,Log如果我卸载应用程序然后再次从Eclipse启动它,则会显示调用.但是,我正在运行测试,以便在应用程序功能运行后查看它们.

我有一个MainMenu活动,它源于多个其他活动.当我卸载应用程序并重新启动它时,它会打印出我希望打印的内容.然后,我转到我的设备的设置和Force Quit应用程序(这是正确的事情吗?).之后,我再次打开我的应用程序.该方法没有Log消息onCreate(),但是当我移动到另一个Activity时,我MainMenu的方法onPause()onStop()方法都有Log正确打印到LogCat的消息.

有任何想法吗?

编辑:

我想在重新启动时添加它,也会跳过方法中的Log消息onStart().

如果您有兴趣,这是我的onCreate/onStart/onPause/onStop方法.内部有很多重复的代码,试图找出重新启动应用程序时调用的方法.虽然不应该有所作为,我觉得这是我的重启应用程序的方法的问题.

public void onCreate(Bundle savedInstanceState) {
    // This calls all inherited methods, as this is a subclass of Activity.
    super.onCreate(savedInstanceState);
    if(D) Log.e(TAG, "+++ ON CREATE +++");
    Log.i( TAG, "Whats going onnnn" );


    // Set the view the main.xml
    setContentView(R.layout.main);
    RelayAPIModel.bluetoothConnected = false;
    // Initialize …
Run Code Online (Sandbox Code Playgroud)

android logcat oncreate

6
推荐指数
1
解决办法
2124
查看次数