2016-04-18 15 views
0

here is the error log
アンドロイド:私はアンドロイドで初心者とその私の最初のアプリケーションをm個

をクラッシュアンドロイドアラートダイアログ内のメソッドを呼び出すと、私は、ユーザーのためのオプションを含めることができるようにから連絡先を選択するために私のプロジェクトで警告ダイアログを使用したいです電話機の連絡先またはEditTextビューで電話番号を入力してください

のメソッドを呼び出した後にアプリケーションがクラッシュすると、setPositiveButton ClickListenerのブロックブロックが表示され、androidRunTime:NullPointerExceptionのエラーが表示されます。

ここに私のcontact_main.javaアクティビティコードがあります。
誰でも助けてください!

事前のおかげで

package com.example.ghaznavi.contacts; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.Dialog; 
import android.app.Fragment; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.os.Bundle; 
import android.provider.ContactsContract; 
import android.text.method.PasswordTransformationMethod; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.CompoundButton; 
import android.widget.EditText; 
import android.widget.Toast; 

public class Contact_main extends Activity { 
    Button btnAlertDialog; 
    Settings mSettings = new Settings(); 
    private static final int CONTACT_PICKER_FOR_ALLOWED_LIST_RESULT = 301; 
    View mActiveView = null; 
    Activity mActivity = null; 
    Context mContext = null; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_contact_main); 

     btnAlertDialog = (Button) findViewById(R.id.btnAdd); 
     btnAlertDialog.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       contactPickerDialog(); 
      } 
     }); 
    } 

    public void contactPickerDialog() { 
     LayoutInflater inflater = this.getLayoutInflater(); 
     final View alertLayout = inflater.inflate(R.layout.contact_number_input_options, null); 

     final AlertDialog.Builder alert = new AlertDialog.Builder(Contact_main.this).setTitle("Add Contact Number"); 
     alert.setView(alertLayout); 
     alert.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface paramAnanymous, int which) { 

         String str = ((EditText) alertLayout.findViewById(R.id.typed_number_input)).getText().toString(); 
         if ((str == null) || (str.length() < 3)) { 
          Toast.makeText(Contact_main.this.getApplicationContext(), str.toString(), Toast.LENGTH_SHORT).show(); 
          paramAnanymous.dismiss(); 
          return; 
         } else { 

          Contact_main.this.mSettings.Initialize(Contact_main.this.mActivity); 
          Contact_main.this.mSettings.AddtoContactList(null, str); 
          Contact_main.this.mSettings.SaveSettings(); 
          Toast.makeText(Contact_main.this.getApplicationContext(), "it works", Toast.LENGTH_SHORT).show(); 
          paramAnanymous.dismiss(); 
          return; 
         } 

        } 
     } 
     ); 

     final AlertDialog alertDialog = alert.create(); 
     alertDialog.show(); 

     ((Button)alertLayout.findViewById(R.id.contact_input)). 
       setOnClickListener(new View.OnClickListener() { 

             public void onClick(View v) { 
              try { 
               if ((alertDialog != null) && (alertDialog.isShowing())) { 
                alertDialog.dismiss(); 
               } 
               Intent localIntent = new Intent("android.intent.action.PICK", ContactsContract.Contacts.CONTENT_URI); 
               Contact_main.this.startActivityForResult(localIntent, 301); 
               return; 
              } catch (Exception localException) { 
               alertDialog.dismiss(); 
              } 
              return; 
             } 
            } 

       ); 
     } 

    } 
+0

'mSettings'はどこで初期化しますか?あなたは 'EditText'からテキストを得ることができるということを理解していますか? – 0xDEADC0DE

+0

@ 0xDEADC0DEはい私はEditTextのテキストを得ることができ、私はこの設定を宣言しましたmSettings = new Settings(); contact_mainブロックが開始した後 – Angel

+0

完全に投稿 'Contact_main' –

答えて

0

final AlertDialog.Builder alert = new AlertDialog.Builder(ContactMainActivity.this)に変更final AlertDialog.Builder alert = new AlertDialog.Builder(this) ......

....

私はなぜ知らないが、私はこの問題を抱えていたし、この私に働いた 私もあなたに仕事が願っています。

+0

私は試みましたが、問題ではありません。他の方法からメソッドを削除すると動作しますが、これらのメソッドを呼び出す必要があります。 – Angel

+0

エラーラインを投稿できますか? –