2013-03-28 76 views
2

下面是显示我的对话框活动的代码。每当我尝试打开这个意图时,我的应用程序就会关闭,所以请告诉我我的代码中的错误。这里是logcat。当我尝试显示对话框时,它给了我FORCE CLOSE错误

03-28 12:11:36.851:E/AndroidRuntime(681):致命异常:主03-28 12:11:36.851:E/AndroidRuntime(681):了java.lang.RuntimeException: 无法启动活动 ComponentInfo {com.neelrazin.noteit/com.neelrazin.noteit.Password}: java.lang.NullPointerException 03-28 12:11:36.851: E/AndroidRuntime(681):at android.app .ActivityThread.performLaunchActivity(ActivityThread.java:1647) 03-28 12:11:36.851:E/AndroidRuntime(681):at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 03-28 12: 11:36.851:E/AndroidRunt ime(681):at android.app.ActivityThread.access $ 1500(ActivityThread.java:117)03-28 12:11:36.851:E/AndroidRuntime(681):at android.app.ActivityThread $ H.handleMessage (ActivityThread.java:931) 03-28 12:11:36.851:E/AndroidRuntime(681):at android.os.Handler.dispatchMessage(Handler.java:99)03-28 12:11:36.851: E/AndroidRuntime(681):at android.os.Looper.loop(Looper.java:123)03-28 12:11:36.851: E/AndroidRuntime(681):at android.app.ActivityThread.main( ActivityThread.java:3683)03-28 12:11:36.851:E/AndroidRuntime(681):at java.lang.reflect.Method.invokeNative(Native Method)03-28 12:11:36.851:E/AndroidRuntime(6 81):at java.lang.reflect.Method.invoke(Method.java:507)03-28 12:11:36.851: E/AndroidRuntime(681):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:839) 03-28 12:11:36.851:E/AndroidRuntime(681):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)03-28 12:11:36.851:E/AndroidRuntime(681):在 dalvik.system.NativeStart.main(本地方法)03-28 12:11:36.851: E/AndroidRuntime(681):引起:java.lang .NullPointerException 03-28 12:11:36.851:E/AndroidRuntime(681):at com.neelrazin.noteit.Password.onCreate(Password.java:57)03-28 12:11:36.851:E/AndroidRuntime (681):在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 12月3日至28日:11:36.851:E/AndroidRuntime(681):在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)

public class Password extends Activity { 

    final Context context = this; 
    public Long mRowId; 
    private NotesDbAdapter mDbHelper; 
    String password; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     //setContentView(R.layout.password); 


     mRowId = (savedInstanceState == null) ? null : 
      (Long) savedInstanceState.getSerializable(NotesDbAdapter.KEY_ROWID); 
     if (mRowId == null) { 
      Bundle extras = getIntent().getExtras(); 
      mRowId = extras != null ? extras.getLong(NotesDbAdapter.KEY_ROWID) 
            : null; 
     } 

     mDbHelper = new NotesDbAdapter(this); 
      mDbHelper.open(); 
      Cursor notesC = mDbHelper. fetchNote(mRowId); 
      startManagingCursor(notesC); 
      final String pass = notesC.getString(notesC.getColumnIndex("passw")); 


     // custom dialog 
      final Dialog dialog = new Dialog(context); 
      dialog.setContentView(R.layout.password); 
      dialog.setTitle("Enter Password"); 

      final EditText enterpass = (EditText) dialog.findViewById(R.id.edtext); 

      Button ok=(Button)findViewById(R.id.dialogButtonOK); 
      ok.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        password= enterpass.getText().toString(); 
        if(password.equals(pass.toString())){ 

         Intent i= new Intent(getBaseContext(),NoteEditor.class); 
          i.putExtra(NotesDbAdapter.KEY_ROWID,mRowId); 
          startActivity(i); 
        } 

       } 
      }); 

      Button dialogButton = (Button)   dialog.findViewById(R.id.dialogButtonCANCEL); 
      dialogButton.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 
        dialog.dismiss(); 
       } 
      }); 
      dialog.show(); 
    } 
+0

这是你的代码的第57行吗? – 2013-03-28 06:45:26

+0

Password.java中的第57行是什么? – 2013-03-28 06:45:30

+0

ok.setOnClickListener(new View.OnClickListener(){这是我的第57行password.java中的日食 – Razin 2013-03-28 06:48:55

回答

4

在这里:

Button ok=(Button)findViewById(R.id.dialogButtonOK);//<< 

你忘记从中次访问之前调用setContentView的活动。设置活动布局在活动onCreate为:

@Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); //<<< 
    ..... 

,或者如果dialogButtonOK按钮内部对话框,然后使用对话框实例初始化ok按钮:

Button ok=(Button)dialog.findViewById(R.id.dialogButtonOK); 
+0

但我已经设置了内容....看到对话的地方DIALOG启动“dialog.setContentView(R.layout.password);” – Razin 2013-03-28 06:51:22

+1

@Razin:你在哪里设置Content for Activity?因为使用'dialog.setContentView(R.layout.password);'line u是为内容设置Dialog而不是活动 – 2013-03-28 06:52:49

+0

耶感谢它的工作:)并且你能告诉我什么时候我点击取消我怎么能回到我以前的活动? – Razin 2013-03-28 06:55:08

2

似乎对Buttonok错误,因为初始化中完成错误的方法,

这样!:

Button ok =(Button)dialog.findViewById(R.id.dialogBu​​ttonOK);

相反:

按钮OK =(按钮)findViewById(R.id.dialogBu​​ttonOK);

相关问题