方法OnCreate(bundle)永远不会被调用,应用程序崩溃

时间:2015-10-04 18:09:28

标签: java android

我一直在努力制作一个使用锁屏概念的应用程序,作为一个干运行我创建了一个应用程序,一旦点击给定的按钮锁定屏幕,我已经使用了基本概念没什么新的这是我的Java代码

\.b

接下来是我的清单,我认为是在创造所有问题

package com.example.gaurav.locknowtest2;
import android.app.Activity;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.app.admin.DevicePolicyManager;
import android.app.admin.DeviceAdminReceiver;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends DeviceAdminReceiver{
    public class controller extends Activity{
        DevicePolicyManager dpm;
        ComponentName comname;
        Button b1;
        TextView display;
        public void OnCreate(Bundle xyz){
            super.onCreate(xyz);
            dpm=(DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);
            comname=new ComponentName(this,MainActivity.class);
            setContentView(R.layout.activity_main);
            b1=(Button)findViewById(R.id.start);
            display=(TextView)findViewById(R.id.xyz);
            b1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
                    intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, comname);
                    startActivityForResult(intent,1);
                    display.setText("just to test the method");

                }
            });
        }
        @Override
        protected void onActivityResult(int requestCode, int resultCode,
                                        Intent data) {
            super.onActivityResult(requestCode, resultCode, data);

            switch (requestCode) {
                case 1:
                    if (resultCode == Activity.RESULT_OK) {
                        dpm.lockNow();
                    } else {
                        Log.i("DeviceAdminSample", "Administration enable FAILED!");
                    }
                    return;
            }
        }
    }
}

我需要在本周完成这项工作,所以请看看..

3 个答案:

答案 0 :(得分:2)

您的方法不是正确的。

public void OnCreate(Bundle xyz){
你有资本O. 它应该是这样的:

    @Override
    public void onCreate(Bundle savedInstanceState) {
...
}

答案 1 :(得分:1)

Java区分大小写,因此命名方法

public void OnCreate(Bundle bundle) {

不是

protected void onCreate(Bundle bundle) {

使用@Override注释确保您实际覆盖方法

此外,public class controller extends Activity {应该是public static class controller extends Activity {,除了根据Java命名约定,类应该以 C 首字母开头。

答案 2 :(得分:0)

扩展# delete the common column in one of the data frames del extra['key'] # join result = data.join(extra) 的类不能是另一个类的内部类,因为android系统需要能够在没有另一个类的实例的情况下创建Activity类的新实例。您的Activity类是controller的内部类,因此如果没有MainActivity的实例,则无法实例化。

看到这个答案:

Nested inner Activity class in android

另外,正如其他人所指出的,MainActivity中有一个拼写错误。这意味着您已经创建了一个完全独立的方法,而不是覆盖onCreate。但是,这并不能解释应用程序崩溃的原因。 (您可以编写一个不会覆盖onCreate的{​​{1}}类,并且可以在不抛出任何异常的情况下运行。)