2011-03-20 63 views
2

嗨,我是一名新的Android開發人員,我是一名教練,我正在嘗試創建一個警告框。錯誤在Android中創建警報箱

在我的項目我已經把2個編輯文本框,如果任何人正被空我想彈出一個警告框,如果兩個箱子被填滿它會移動到一個新的一頁。

下面是我的編碼

{ b = (Button)findViewById(R.id.widget30); 

    et1 = (EditText)findViewById(R.id.et1); 
    et2 = (EditText)findViewById(R.id.et2); 


    b.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
      if(et1.getText().toString().length() == 0) 
      { 
       et.setVisibility(View.VISIBLE); 
       alertbox(); 
      } 
      else if (et2.getText().toString().length() == 0) 
      { 
       et.setVisibility(View.VISIBLE); 
       alertbox(); 
      } 
      else 
      { 
      main.this.finish(); 
      Intent myIntent = new Intent(v.getContext(), T.class); 
      startActivityForResult(myIntent, 0); 
      } 
     }    
    }); 
} 


public void alertbox() 
{ 
    et = new TextView(this); 
    Builder alert =new AlertDialog.Builder(main.this); 
    alert.setTitle("Alert"); 
    alert.setMessage("Required all fields"); 
    alert.setView(et); 
    alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() 
    { 
     public void onClick(DialogInterface dialog, int whichButton) 
     { 
      dialog.cancel(); 
     } 
    }); 
    AlertDialog alert1 = alert.create(); 
    alert1.show(); 
} 
} 

它移動到一個新的一頁,但警告框是不開放,以下是錯誤的logcat

java.lang.NullPointerException在我的編碼以下行

{ 

if(et1.getText().toString().length() == 0) 
       { 
        et.setVisibility(View.VISIBLE); 
        alertbox(); 
       } 
       else if (et2.getText().toString().length() == 0) 
       { 
        et.setVisibility(View.VISIBLE); 
        alertbox(); 
       } 
} 
} 

請幫我找出我有什麼錯做

回答

1

可能在此行

et.setVisibility(View.VISIBLE); 

et是因爲它不存在null對象。它接縫你創建你打電話alertbox()後,才

0

你應該考慮在看文檔:http://developer.android.com/guide/topics/ui/dialogs.html

Android的SDK通過ShowDialog的()和dismissDialog()方法需要照顧的對話爲你的。你會添加需要添加一個onCreateDialog方法並在這裏添加你的創建代碼。

的Android也重用一個對話框,一旦它被創建,而在你的代碼,你每次創建一個新的。

這是你可以做什麼最基礎的,有很多更多的選擇。

0
b.setOnClickListener(new OnClickListener() 
{ 
    @Override 
    public void onClick(View v) 
    { 
     if(et1.getText().toString().length() == 0) 
     { 

      alertbox(); 
     } 
     else if (et2.getText().toString().length() == 0) 
     { 

      alertbox(); 
     } 
     else 
     { 
     Intent myIntent = new Intent(main.this, T.class); 
     startActivity(myIntent); 
     } 
    }    
});`