2013-12-05 5 views
1
public class Input extends FragmentActivity { 

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


    EditText mEditText1 = (EditText)findViewById(R.id.number1i); 
    String val1 = mEditText1.getText().toString(); 
    EditText mEditText2 = (EditText)findViewById(R.id.number2i); 
    String val2 = mEditText2.getText().toString(); 

    double dVal1 = Double.parseDouble(val1); 
    double dVal2 = Double.parseDouble(val2); 


    } 
} 

Это мой XML-файл:EditText сохраняет возвращаемое значение null?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:background="@drawable/background"> 

    <EditText 
     android:id="@+id/number1i" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:hint="Enter your first value" 
     android:inputType="numberDecimal" /> 

    <EditText 
     android:id="@+id/number2i" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:ems="10" 
     android:hint="Enter your second value" 
     android:inputType="numberDecimal" /> 

    <TextView 
     android:id="@+id/output" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center" 
     android:textSize="22sp" /> 

    <Button 
     android:id="@+id/add_marker" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="20dp" 
     android:text="Add value" 
     android:onClick="userInput1" 
     android:textSize="22sp" /> 

</LinearLayout> 

Ошибка:

12-05 08:57:17.113: E/AndroidRuntime(8420): Caused by: java.lang.NullPointerException 
12-05 08:57:17.113: E/AndroidRuntime(8420):  at com.example.whatever.input.onCreate(input.java:23) 

Линия 23 является

String val1 = mEditText1.getText().toString(); 

Любая помощь, пожалуйста?

Я бы предположил, что значение может быть пустым?

+1

Я думаю, вы должны сначала проверить, не пустое ли значение, а затем попытаться использовать toString –

+0

получить текстовое значение edittext в onclick on Button. –

+0

Если все правильно .. очистить и построить проект –

ответ

9

В коде mEditText1.getText() всегда будет пустым в onCreate, если вы не должны установить text в нем с XML

+0

Спасибо за ответ. Проблема, возникающая при создании onClick, заключается в том, что я хочу передать эти два значения в свой API Карт Google. Так, например, когда я передаю два значения в onClick, два значения будут назначать маркер Google Maps (пользователь вводит широту и долготу в EditText). Я не могу назначить значения в API Карт Google из onClick(). Я могу добавить маркер установки в onCreate, но мне нужна широта и долгота, установленные пользователем. – Adz

+0

Вам нужно будет установить маркер API Карт Google с помощью кнопки «Button» после проверки того, что ни один из значений «EditText» не равен нулю. – Apoorv

2
String val1 = mEditText1.getText().toString(); 
if(val1 != null && val1 !=""){ 
double dVal1 = Double.parseDouble(val1); //+handle parse error 
} 

// но вы должны получить текст в методе OnClick

2

Да, это потому, String val1 = mEditText1.getText().toString(); и String val2 = mEditText2.getText().toString(); находятся на onCreate(), они выполняются до того, как пользователь поместит что-нибудь в edittext, попробовав их использовать в прослушивающем клиенте

1

вы можете сделать null check для edittext.getText() & попробовать поставить где-то в коде, где у вас есть вход для editext

0

Измените ваш XML EdiText Компонент:

<EditText 
    android:id="@+id/number1i" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:ems="10" 
    android:hint="Enter your first value" 
    android:text="Test Value"      << Add this line 
    android:inputType="numberDecimal" /> 

Теперь попробуйте запустить свой код.

Надеюсь, это поможет.

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