Начинающий с Android / Java - помогите с Намерением и добавлением двух чисел - PullRequest
0 голосов
/ 08 июня 2011

Я работаю над этим в течение нескольких дней, и у меня просто нет идей.Я искал везде, и у меня есть книга ProAndroid2.

Я пытаюсь сделать что-то простое (подумал я), в котором есть два текстовых поля, где пользователь вводит число в каждом, затем нажимает кнопку иСумма чисел будет отображаться.

я нашел это на стековом потоке о том, чтобы делать в точности то же самое и очень хорошо учился всяким вещам, но я, очевидно,упустить что-то очень очень основное.я могу заставить текстовое представление отображать сумму, если я установил переменные, но я не могу понять, как получить пользовательский ввод.

ошибки, которые я получаю, состоят в том, что EditText не может быть проанализирован какв целых числах, даже если все, что я найду, говорит, что я использую метод toString, который я использую.и я думаю, что это может быть потому, что я не уверен, как заставить приложение ждать, чтобы проанализировать его, пока не будет нажата кнопка, что, как я думал, я делал с тем, как я его настроил.по сути, это ничего не разбирает и, конечно, это не может быть проанализировано.тьфу.

любая помощь высоко ценится.Пожалуйста, поверьте, я искал, искал, читал и читал, я думаю, что мне не хватает какой-то важной концепции, и я не знаю, что именно искать, чтобы получить помощь.Я сделал несколько других уроков, но это просто сводит меня с ума.

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.EditText;
    import android.widget.TextView;

    public class AddNumbers extends Activity 
    {
        TextView textview;
        Button  button1;
        EditText number1, number2;


 /** Called when the activity is first created. */
@Override

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    textview = (TextView)findViewById(R.id.textView);

    //gets numbers from user
   number1 = new EditText(this);
   number2 = new EditText(this);


   button1 = (Button)findViewById(R.id.button1);
   button1.setOnClickListener(btnListener);
   }


   private OnClickListener btnListener = new OnClickListener()

 {

    public void onClick(View v)
   {                        


   int int1 = Integer.parseInt(number1.getText().toString());
   int int2 = Integer.parseInt(number2.getText().toString());

   int sum = int1 + int2;

  Intent intent = new Intent(this,AddNumbers.class);
  intent.putExtra("sum",sum);
  startActivity(intent);

  getIntent();
  intent.getIntExtra("sum", sum);

  textview.setText(String.valueOf(sum));
   }
   }

 };

и вот мой xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText android:layout_width="match_parent" android:text="EditText" 
android:layout_height="wrap_content" android:id="@+id/number1"></EditText> 
<EditText android:layout_width="match_parent" android:text="EditText" 
android:layout_height="wrap_content" android:id="@+id/number2"></EditText>
<Button android:id="@+id/button1" android:text="Button" android:layout_width="wrap_content" 
android:layout_height="wrap_content"></Button>
<TextView android:text="TextView" android:id="@+id/textView" 
android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
</LinearLayout>

и манифест

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.self.projectOne"
    android:versionCode="1"
    android:versionName="1.0">


<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name="AddNumbers"
              android:label="@string/app_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>
</manifest>

Ответы [ 2 ]

1 голос
/ 08 июня 2011

вы должны получить ваши editTexts из содержания вашей деятельности, как это:

//gets numbers from user
   number1 = (EditText)findViewById(R.id.number1);
   number2 = (EditText)findViewById(R.id.number2);

, а затем на вашем методе onClick: вам не нужно начинать свою деятельность, потому что вы уже на нем: попробуйте это:

@Override
public void onClick(View v)
   {                        

try{
   int int1 = Integer.parseInt(number1.getText().toString().trim());//Edited line 
   int int2 = Integer.parseInt(number2.getText().toString().trim());//edited line 
   }catch(NumberFormatEception e){
     Toast.makeText(this,"try to enter a valid number", 3000).show();

}

   int sum = int1 + int2;

   //display the sum on the textView
   textview.setText(String.valueOf(sum));
   }
0 голосов
/ 08 июня 2011

Вы не отобразили Java EditText на тот, что в XML.Назначьте number1 = (EditText) findViewById(R.id.number1);, чтобы выбрать его из макета XML.

...