2013-12-19 23 views
0

這可能有一個簡單的答案:當我的警告框顯示時,我嘗試將EditText的內容存儲在一個字符串中,但字符串始終爲空。未被edittext字段填充的字符串。 Android

contents = inputElement.getText().toString(); 

代碼:

public class MainActivity extends Activity { 

EditText inputElement; 
Spinner spinner; 
MySQLiteAdapters adapter; 
MySQLiteHelper helper_ob; 
AlertDialog dialog; 
List<String> lables; 
String contents; 
ArrayAdapter<String> dataAdapter; 
public static final String PREFS = "examplePrefs"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button start = (Button) findViewById(R.id.start); 
    //start.setVisibility(View.GONE); 
    spinner = (Spinner) findViewById(R.id.spinner1); 
    inputElement = new EditText(this); 
    adapter = new MySQLiteAdapters(getApplicationContext()); 
    lables = adapter.getAllLabels(); 
    exmaplePrefs = getSharedPreferences(PREFS, 0); 
    editor = exmaplePrefs.edit(); 

    final AlertDialog firstTimeUse = new AlertDialog.Builder(this) 
      .setView(inputElement) 
      .setTitle("TITLE") 
      .setCancelable(false) 
      .setPositiveButton(android.R.string.ok, null).create(); 

    firstTimeUse.setOnShowListener(new DialogInterface.OnShowListener() { 

     @Override 
     public void onShow(DialogInterface dialog) { 
      Button b = firstTimeUse.getButton(AlertDialog.BUTTON_POSITIVE); 
      b.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        contents = inputElement.getText().toString(); 
        if (contents.matches("")){ 
         showAlertbox("You Must Enter a Team"); 
        }else{ 
         adapter.insertTeamDetails(contents); 
         List<String> lables = adapter.getAllLabels(); 
         dataAdapter = new ArrayAdapter<String>(MainActivity.this,android.R.layout.simple_spinner_item, lables); 
         spinner.setAdapter(dataAdapter); 
         lables.add("Add New Team..."); 
         firstTimeUse.dismiss(); 
        } 

       } 

      }); 
     } 
    }); 


    if (lables.isEmpty()) 
    { 
     firstTimeUse.show(); 
    } 
    else{ 
     dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setAdapter(dataAdapter); 
     lables.add("Add New Team..."); 
    } 

在此先感謝

回答

3

創建的inputElementonCreate一個新的實例:

inputElement = new EditText(this); 

所以在它的文本始終是空的,因爲你不要將其添加到佈局。

使用findViewById從佈局實例化它或將其添加到代碼中的佈局。

+0

.setView(inputElement)不會將它添加到AlertDialog中? –

+0

我從來沒有見過這種方式。通常你會膨脹一個你添加並查找視圖元素的視圖。就像在這裏:http://developer.android.com/guide/topics/ui/dialogs.html#CustomLayout – Szymon

1

SetView(View view)需要視圖元素,我不知道你如何在那裏添加EditText。您可以在佈局文件本身是這樣的添加編輯短信:

和的onCreate這樣的聲明:

inputElement = (EditText) findViewById(R.id.EditTextPassword); 

你可以得到的字符串是這樣的:

inputElement.getText().toString();