I have a simple application that has one edittext field, and one button. The button I want to take in the value of the edittext field and store it into a string (to parse later). But I am stuck at even reading the value using the method getEditableText(). I am printing out the value to Log.d() but the value appears to be empty or at least an empty string. Where am I going wrong?
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="26dp"
android:text="@string/title"
tools:context=".MainActivity" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true"
android:layout_marginTop="38dp"
android:inputType="text"
android:ems="10" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editText1"
android:layout_centerHorizontal="true"
android:text="@string/button1"
android:onClick="createarray" />
</RelativeLayout>
MainActivity.java
package com.example.hw1;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
int[] numberarray;
public void createarray(View v){
setContentView(R.layout.activity_main);
//EditText editText1 = (EditText)findViewById(R.id.editText1);
//Toast.makeText(this,editText1.getText().toString(),
//Toast.LENGTH_SHORT).show();
//String etoutput = editText1.getText().toString();
String etoutput = ((EditText)findViewById(R.id.editText1)).getEditableText().toString().trim();
Log.d("etoutput",etoutput);
if(etoutput.length() > 0){
Log.d("etoutput length","its got something");
}
else{
Log.d("etoutput length","EMPTY!!");
}
//Log.d("etoutput","in here");
//Log.d("etoutput",etoutput);
String[] sepetoutput = etoutput.split("[\\s,]+");
numberarray = new int[sepetoutput.length];
for (int i=0;i<sepetoutput.length;i++){
try{
Log.d("i",Integer.toString(i));
numberarray[i] = Integer.parseInt(sepetoutput[i]);
}catch(NumberFormatException nfe){
}
}
Toast.makeText(this,"Array size: " + numberarray.length,
Toast.LENGTH_SHORT).show();
((EditText)findViewById(R.id.editText1)).setText("123456");
}
}
You are invoking
setContentView()each time you press thebutton. This action will reset theEditTextto the state you defined on your Xml Layout (which is empty). Remove that line on yourcreatearraymethod and you should get what you want.