2013-09-05 46 views
-1

我正在嘗試創建一個sudoku板,當您按下其中一個空按鈕時,它將顯示 您有一個警報對話框,其中包含數字1-9的10個按鈕結束一個空的按鈕; 當我按下對話框中的其中一個按鈕沒有任何反應。AlertDialog中的Onclick不起作用

遊戲代碼:

AlertDialog.Builder alert=new AlertDialog.Builder(this); 
alert.setView(View.inflate(this, R.layout.activity_dialog, null)); 
alert.show(); 
Intent e=getIntent(); 
int s=e.getIntExtra("number", 0); 

對話框代碼:

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_dialog); 
     button1=(Button)findViewById(R.id.btn1); 
     button1.setOnClickListener(this); 
     button2=(Button)findViewById(R.id.btn2); 
     button2.setOnClickListener(this); 
     button3=(Button)findViewById(R.id.btn3); 
     button3.setOnClickListener(this); 
     button4=(Button)findViewById(R.id.btn4); 
     button4.setOnClickListener(this); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.dialog, menu); 
     return true; 
} 

@Override 
public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Button b=(Button)v; 
     if(b==button1) 
     { 
       button1.setText("hay"); 
       Intent i=new Intent(this,EasyGame.class); 
       i.putExtra("number", 1); 
       startActivity(i); 
     } 
     else 
     { 
       if(b==button2) 
       { 
         Intent i=new Intent(this,EasyGame.class); 
         i.putExtra("number", 2); 
         startActivity(i); 
       } 
       else 
       { 
         if(b==button3) 
         { 
           Intent i=new Intent(this,EasyGame.class); 
           i.putExtra("number", 3); 
           startActivity(i); 
         } 
         else 
         { 


           if(b==button4){ 
             Intent i=new Intent(this,EasyGame.class); 
             i.putExtra("number", 4); 
             startActivity(i); 
           } 
+3

你不能指望別人瞭解給你Activity一個Dialog外觀通過你的數百行代碼來找到你的bug。當你有這樣的問題時,你通常希望在某種微不足道的情況下(幾行代碼)重現你的問題,如果這不能幫助你找到問題,那麼你在這裏發佈問題... – hendrix

+0

我不能真的減少對話框代碼,但我更新了遊戲代碼到更具體的行 – user2747228

+0

如果你不想減少對話框代碼,你只需創建一個新的簡單項目,只需一個按鈕就可以實現簡單的警報對話框,然後嘗試是否可行。 – hendrix

回答

0

正如評論所說,你應該儘量縮小您的問題,只發布最相關的代碼,我們將如果我們認爲必要,請求更多。另外,在您的文章中發佈使用工具欄格式化的代碼,以便我們不必來回翻轉。在幫助解決問題時,您還應該通過單擊相應答案旁邊的複選標記來接受答案。你也應該確保閱讀Help Section

說到這裏,我會盡力幫助你知道這一次。它看起來像你通過膨脹layout顯示AlertDialogButtons,然後期待Dialog類運行。這不是它的工作原理。如果您想使用該課程,則不使用AlertDialog,而是創建一個Intent並使用startActivityForResult開始該課程,並在Dialog類中發回setResult()的結果。然後,您將通過onActivityRresult()在您的第一個Acvtivity中獲得該結果。所以,開始你的Intent空按鈕被點擊時,而不是AlertDialog

Intent i = (FirstActivityName.this, Dialog.class); 
startActivityForResult(i, 0); 

在你Dialog類,點擊按鈕後,你有一個空的構造函數創建一個Intent併發送回說被點擊

if(b==button1) 
      { 
        Intent i=new Intent(); 
        i.putExtra("number", 1); 
        setResult(0); 
        finish(); 

然後在你的第一Activity你將有一個方法onActivityResult()將給予您發回的數據Intent

請仔細閱讀Activity Docs關於這方面的例子。

我可能錯了,因爲有很多代碼需要查看,但這看起來正在發生在我身上。

對話主題活動

此外,您還可以通過添加以下行到合適的<activity>標籤在你manifest

android:theme="@android:style/Theme.Dialog" 
+0

謝謝我會閱讀幫助部分我想窗口看起來像一個AlertDialog,有沒有,我可以做到這一點? – user2747228

+0

是的,看我的回答的最後部分 – codeMagic

+0

謝謝我會嘗試你建議的 – user2747228