2011-03-17 88 views
0

在我的應用程序中,我有三個調用函數的菜單選項。三個調用中的一個調用函數應該從文件讀取一些信息,然後將其顯示在對話框中。我的問題是讓對話框工作。我使用http://www.helloandroid.com/tutorials/how-display-custom-dialog-your-android-application 作爲參考,但他們使用的方法不適用於我。如何從函數顯示自定義對話框?

星號行之間的部分是我遇到錯誤的地方。 「類型View中的setOnClickListener(View.OnClickListener)方法不適用於參數(new DialogInterface.OnClickListener(){})」它繼續列出建議的替代方法,它們給出了相同的錯誤,但列出了setOnClickListener作爲建議的替代方法。我得到另一個錯誤之後的覆蓋:「onClick(View)類型的新DialogInterface.OnClickListener(){}方法必須覆蓋超類方法」

必須有一個簡單的方法來完成這項任務?我是否缺少的東西,應該是顯而易見的?

//now stick it in a dialog box 
     Context mContext = getApplicationContext(); 
     Dialog dialog = new Dialog(mContext); 
     dialog.setContentView(R.layout.custom_dialog); 
     dialog.setTitle("Totals"); 
     dialog.setCancelable(true); 
     TextView text1 = (TextView) dialog.findViewById(R.id.diagtext1); 
     TextView text2 = (TextView) dialog.findViewById(R.id.diagtext2); 
     TextView text3 = (TextView) dialog.findViewById(R.id.diagtext3); 
     Button btn = (Button) dialog.findViewById(R.id.button); 
     text1.setText(dist); 
     text2.setText(time); 
     text3.setText(speed); 
     //****************************************************** 
     btn.setOnClickListener(new OnClickListener(){ 
      @Override 
      public void onClick(View v){ 
       finish(); 
      } 

     }); 
     //****************************************************** 
     dialog.show(); 

    } 

回答

1

你必須import android.view.View.OnClickListener;擺脫的第一個錯誤。

onClick()方法之前刪除@OverrideView.OnClickListener宣佈onClick()abstract void因此沒有實現可以覆蓋。

如果只有一個「活動」正在運行,finish()調用onClick()方法將關閉您的活動/應用程序。您可能需要使用dialog.dismiss()dialog.cancel()

+1

我改變了你建議的事情。它compliles,但調用dialog.show()時崩潰。確切的錯誤是:「android.view.WindowManager $ BadTokenException:無法添加窗口 - 標記null不適用於應用程序...」任何想法會導致這種情況? – user663467 2011-03-17 02:12:01

+1

成功!該錯誤來自使用'Context mContext = getApplicationContext(); \t final Dialog dialog = new Dialog(mContext);'要解決它,只要做'對話框對話框= new Dialog(this);' – user663467 2011-03-17 03:01:41

0

標記/評論按鈕'btn'並嘗試添加負面按鈕。

dialog.setNegativeButton("Quit", new OnClickListener(){ 
     @Override 
     public void onClick(View v){ 
      finish(); 
     } 

    }); 

希望能幫到你。