2015-10-04 49 views
0

我一直在尝试使用锁屏概念作为干运行的应用程序我创建了一个应用程序,该应用程序在点击给定按钮后锁定屏幕,以及我使用的基本概念没有什么新的,这里是我的Java代码方法OnCreate(bundle)永远不会被调用和应用程序崩溃

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; 
      } 
     } 
    } 
} 

下了起来,这里是我的清单,我认为是创造一切问题

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.gaurav.locknowtest2" > 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity$controller" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <receiver 
      android:name=".MainActivity" 
      android:permission="android.permission.BIND_DEVICE_ADMIN" > 
     <meta-data 
      android:name="android.app.device_admin" 
      android:resource="@xml/device_admin_sample" /> 

     <intent-filter> 
      <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> 
     </intent-filter> 
      </receiver> 
    </application> 

</manifest> 

我需要得到这个这个做一周,所以请看看..

+0

请发布崩溃日志。 – Antrromet

+0

'controller'是一个扩展了'Activity'的内部类。我不确定你是否可以这样做。 –

+0

@PaulBoddington不,我相当肯定你可以做到这一点,只要它是一个静态的内部类,即使这样你就必须在清单中用$符号指定它 – EpicPandaForce

回答

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命名约定,类应具有ç apital字母开头。

+1

只是为了完整起见,如果没有可覆盖的方法(使用您使用的名称),“@ Override”会产生编译时错误。 – goncalotomas

+0

@EpicPandaForce thnk你工作,我只是缺少静态部分 – gaurav21

2

你的方法没有写成correcrt。

public void OnCreate(Bundle xyz){ 

你有一个大写的O 它应该是这样的:

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

这是一个伟大的发现。这种简单的错误发生在java中的新人 – haseeb

+2

这些错误可以通过使用@ @ Override注释来避免。 – Ridcully

+0

Yeap,但(!!)如果你写自己的代码而不是复制粘贴,这是学习编码的最好原因。 – Shahar

0

一类扩展Activity因为android系统需要能够创造新的实例不能是一个内部类另一个类的你的Activity类没有另一个类的实例。您的controller类是MainActivity的内部类,因此如果没有MainActivity的实例就不能实例化。

看到这个答案:

Nested inner Activity class in android

此外,如被别人指出的那样,你在onCreate有一个错字。这意味着你已经制定了一个完全独立的方法,不会被覆盖onCreate。但是这并不能解释应用程序崩溃的原因。 (你可以写一个Activity类不替换onCreate,和它的作品没有被抛出任何异常。)

+0

啊......你分享的链接有意见表明可以用它作为内部类 – gaurav21

+0

@ gaurav21静态嵌套,但不是内在。 –

相关问题