2013-09-28 3 views
0

Я разрабатываю очень базовое приложение для Android, проблема заключается в том, что я пытаюсь получить значение EditText виджета, это дает мне пустую строку.Невозможно получить значение EditText с помощью findViewById

мой код выглядит следующим образом:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    Button generateButton = (Button) findViewById(R.id.button1); 
    generateButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      //generateFibonacci(); 
      setContentView(R.layout.activity_main); 
      EditText seedValue = (EditText) findViewById(R.id.editText1); 
      TextView fibonacciSeries = (TextView) findViewById(R.id.textView3); 
      String a = seedValue.getText().toString(); 
      try { 
       int seedNumber = Integer.parseInt(seedValue.getText().toString()); 

       for (int i = 0; i < 100; i++) { 
        seedNumber += seedNumber; 
        fibonacciSeries.append(Integer.toString(seedNumber)); 
       } 
      } catch (Exception e) { 
       fibonacciSeries.append(e.toString()); 
      } 

     } 
    }); 
} 

и activity.xml

 <EditText 
    android:id="@+id/editText1" 
    android:inputType="number" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/textView1" 
    android:layout_below="@+id/textView1" 
    android:layout_marginTop="12dp" 
    android:hint="@string/hint" 
    android:ems="10" /> 

Другие подобные вопросы здесь, глядя на SO, как правило, получение решаются путем корректировки макета, но я думаю, что я я уже в правильной компоновке, поскольку мои элементы управления находятся в том же макете, который является тем, который я инициализирую, т.е. R.layout.activity_main любезная помощь.

+0

Есть два xmls с именем 'activity.xml' и' activity_main.xml'? – imranhasanhira

+0

activity.xml или activity_main.xml? – Manishika

ответ

0

Вы звоните setContentView(R.layout.activity_main) дважды. Вы не должны снова называть это в onClick().

Также попробуйте объявить EditText seedValue как переменную экземпляра в вашем классе Activity.

public YourActivity extends Activity { 
    EditText seedValue; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

     Button generateButton = (Button) findViewById(R.id.button1); 
     generateButton.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      seedValue = (EditText) findViewById(R.id.editText1); 
      ... 
      ... 
     } 
    } 
} 
+0

О, черт! Спасибо, это было решено, удалив 'setContentView (R.layout.activity_main)' из метода onClick. Огромное спасибо. – Maven

+0

Рад помочь. :) – epiphany27

Смежные вопросы