Новичок с Android/Java - помогите с намерением и добавлением двух чисел

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

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

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

ошибки, которые я получаю, заключаются в том, что 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>

person molly    schedule 08.06.2011    source источник
comment
хорошо - пока спасибо ... я настроил материал EditText ранее сегодня, но все еще получал ошибки, поэтому изменил его обратно. в любом случае, теперь я получаю следующие ошибки: 06-07 21:26:26.447: ERROR/AndroidRuntime(996): FATAL EXCEPTION: main 06-07 21:26:26.447: ERROR/AndroidRuntime(996): java.lang. RuntimeException: невозможно запустить активность ComponentInfo{com.self.projectOne/com.self.projectOne.AddNumbers}: java.lang.ClassCastException: android.widget.TextView   -  person molly    schedule 08.06.2011


Ответы (2)


вы должны получить свои 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));
   }
person Houcine    schedule 08.06.2011
comment
И это не должно иметь никакого отношения к Намерению! - person xandy; 08.06.2011
comment
ему не нужен умысел, он занимается той же деятельностью - person Houcine; 08.06.2011
comment
Я думаю, я должен был оставить свой комментарий здесь. я изменил свой номер 1 и номер 2 на то, как вы предложили, и удалил информацию о намерениях и т. Д. Я все еще получаю ошибки, но теперь они другие :). думаю, это что-то. - person molly; 08.06.2011
comment
на самом деле, я просто больше возился, и я все еще получаю сообщение об ошибке parseInt. пишет, что не может разобрать. - person molly; 08.06.2011
comment
@Хоусин. Да, я просто говорю Молли изменить название вопроса и теги. @Molly, если он говорит, что не может разобрать, скорее всего, строка, которую вы поместили в текст редактирования, не является числом (или числом, превышающим предел int) - person xandy; 08.06.2011
comment
@Terrance: лоол, извини, я из Марокко, и я действительно не знаю, молли он или она :$, @molly: извините и за вас, я решу вашу проблему с этой ошибкой синтаксического анализа :), см. мою правку , если это не сработало, пожалуйста, добавьте исключения, которые отображает logcat - person Houcine; 08.06.2011
comment
добавлены ошибки в основной пост, а также обновлены теги. Я только что видел твои правки, Хосин - я попробую их и отпишусь. Благодарность!!! - person molly; 08.06.2011
comment
@Molly: добро пожаловать, мы здесь, чтобы помочь :), в случае вашей ошибки убедитесь, что, когда вы получаете свой textView, вы привели его к TextView, или приведение вашего EditText неверно, - person Houcine; 08.06.2011
comment
@Houcine - Eclipse теперь выдает мне эту ошибку Метод makeText(Context, CharSequence, int) в типе Toast неприменим для аргументов (новый View.OnClickListener(){}, String, int), а также говорит о переменных в int sum = int1 + int2 не существуют, даже если они находятся прямо в операторе try. - person molly; 08.06.2011
comment
@molly : замени this на : AddNumbers.this - person Houcine; 08.06.2011
comment
@Houcine - ты быстрый!! я провел поиск и изменил «это» на «AddNumbers.this». тем не менее, он все еще дает мне те же ошибки. Кроме того, я не уверен, что вы имеете в виду, говоря о переносе моего текстового представления на TextView. как только я разобрался с одним, сразу другое пошло не так :) - person molly; 08.06.2011
comment
@Molly: смотри, я решу твою проблему и загружу проект для тебя, ты хочешь добавить два числа из своих editTexts и отобразить результат в TextView, хорошо?? - person Houcine; 08.06.2011
comment
@molly: не волнуйся, я прокомментирую свой код, и это очень просто :) - person Houcine; 08.06.2011
comment
@molly: это ваш проект, загрузите его и ответьте мне, если он не работает: mediafire.com/? 7589v2p99qfilot - person Houcine; 08.06.2011
comment
@houcine - я на Mac и не могу открыть файл 7s. можно сделать как зип? - person molly; 08.06.2011
comment
@Молли; хорошо, нет проблем, это zip-проект: mediafire.com/?2k6v2voxtlx27e7 - person Houcine; 08.06.2011
comment
@houcine - большое спасибо! Теперь я вижу, как это была куча маленьких мелочей, доставлявших мне большие проблемы. - person molly; 08.06.2011

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

person Haphazard    schedule 08.06.2011