2014-03-02 56 views
1

我想在啓動應用程序時顯示自定義對話框,並且不觸發任何事件,例如按鈕點擊。我把自定義對話框放在onCreate(),但應用程序的NullPointerExceptionbtnDecline.setOnClickListener如何在沒有任何點擊的情況下立即顯示對話框?

MainActivity.java

public class MainActivity extends Activity { 

    private Button btnRegister, btnDecline, btnAccept; 
    private EditText etRegisterName, etRegisterEmail; 
    private Dialog terms; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.register); 
     btnRegister = (Button)findViewById(R.id.btnRegister); 
     etRegisterName = (EditText)findViewById(R.id.etRegisterName); 
     etRegisterEmail = (EditText)findViewById(R.id.etRegisterEmail); 

     btnRegister.setOnClickListener(new OnClickListener(){ 
      public void onClick(View v) { 
       String name = etRegisterName.getText().toString(); 
       String email = etRegisterEmail.getText().toString(); 
      } 
     }); 

     showTermsConditions(); 
    } 

    private void showTermsConditions(){ 
     terms = new Dialog(MainActivity.this); 
     terms.setContentView(R.layout.terms_conditions_dialog); 
     btnDecline = (Button) findViewById(R.id.btnDecline); 
     btnAccept = (Button) findViewById(R.id.btnAccept); 
     terms.setTitle("Terms and Conditions"); 
     terms.show(); 

     btnDecline.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       finish(); 
       moveTaskToBack(true); 
      } 
     }); 

     btnAccept.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       terms.dismiss(); 
      } 
     }); 
    } 

} 
+0

你試過到目前爲止是什麼? –

回答

2

更改爲

terms.setContentView(R.layout.terms_conditions_dialog); 
btnDecline = (Button) terms.findViewById(R.id.btnDecline); 
btnAccept = (Button) terms.findViewById(R.id.btnAccept); 

的按鈕屬於Dialog。您需要在該視圖層次結構中查找視圖。

findViewById在當前視圖層次結構中查找視圖。按鈕btnDeclinebtnAccept不屬於register.xml。它們屬於terms_conditions_dialog.xml這是Dialog的佈局。

0

您正在尋找按鈕的ID在錯誤的地方

private void showTermsConditions(){ 
     terms = new Dialog(MainActivity.this); 
     terms.setContentView(R.layout.terms_conditions_dialog); 
     btnDecline = (Button) terms.findViewById(R.id.btnDecline); 
     btnAccept = (Button) terms.findViewById(R.id.btnAccept); 
     terms.setTitle("Terms and Conditions"); 
     terms.show(); 

     btnDecline.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       finish(); 
       moveTaskToBack(true); 
      } 
     }); 

     btnAccept.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       terms.dismiss(); 
      } 
     }); 
    } 
相關問題