2016-03-04 48 views
-1

我正試圖在特定的對話框中提取用戶輸入。 然而,當我嘗試使用findViewbyID,我把在findViewbyID與對話框

final EditText ExceedingLimitInput = (EditText)dialog.findViewbyId(R.id.ExceedingLimitInput); 

Android Studio中說,這是沒有定義對話框。我不太確定我應該在這裏做什麼。

我已經挖掘了一些與此有關的問題,但是其中大多數只涉及片段使用,而我沒有使用任何片段。也許我在延誤錯誤的課程?

有人可以請說明爲什麼對話沒有被定義,我該如何解決它?

這裏是我的參考代碼:

設置菜單(主類)

package com.example.denny.protoype2; 

import android.app.Dialog; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 


public class SettingsMenu extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_settings_menu); 
     //Exceeding Limit Dialog 
     final Button ExceedingLimitButton = (Button)findViewById(R.id.ExceedingLimitButton); 
     ExceedingLimitButton.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       Dialog ExceedingLimitDialog = new Dialog(SettingsMenu.this); 
       ExceedingLimitDialog.setTitle("Exceeding Limit Dialog"); 
       ExceedingLimitDialog.setContentView(R.layout.exceeding_limit_dialog); 
       ExceedingLimitDialog.show(); 

       final EditText ExceedingLimitInput = (EditText)dialog.findViewbyId(R.id.ExceedingLimitInput); 

      } 
     }); 
    } 
} 
+1

嗯,你要尋找的對話框中一些你從來沒有定義,你定義了ExceedingLimitDialog,所以用ExceedingLimitDialog代替對話框 – Alk

+0

是的,哈哈。我正在用那個愚蠢的錯誤搞砸自己。感謝您指出了這一點! – ForceFieldsForDoors

回答

1

首先你應該誇大你的觀點

View view = View.inflate(this, R.layout.exceeding_limit_dialog, null); 

然後將其設置爲你的對話框

ExceedingLimitDialog.setContentView(view); 

最後,你可以找到你的EditText

final EditText ExceedingLimitInput = (EditText) view.findViewById(R.id.ExceedingLimitInput); 
+0

現在它說,findViewbyID由於某種原因未定義... – ForceFieldsForDoors

+0

可能是問題是在'findViewById – Bashalex

+0

哇'我是這樣一個dweeb:/ – ForceFieldsForDoors

5

不喜歡

final EditText ExceedingLimitInput = (EditText)ExceedingLimitDialog.findViewbyId(R.id.ExceedingLimitInput); 

dailog == ExceedingLimitDialog你的情況