java - Android/Java 初学者 - 帮助了解 Intent 和添加两个数字

标签 java android nullpointerexception parseint

我已经为此工作了几天,但我没有想法。 我到处找遍了,找到了《ProAndroid2》这本书。

我正在尝试做一些简单的事情(我认为),它有两个文本框,用户在每个文本框中输入一个数字,然后按一个按钮,就会显示数字的总和。

我发现this在 stackoverflow 上关于做几乎完全相同的事情并且一直在学习各种东西方面做得很好,但我显然错过了一些非常非常基本的东西。如果我设置变量,我可以让 TextView 显示总和,但我不知道如何获取用户输入。

我遇到的错误是 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>

和 list

    <?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>

最佳答案

您应该从 Activity 的内容中获取 editText,如下所示:

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

然后在你的 onClick 方法上:你不需要开始你的 Activity ,因为你已经在上面了:试试这个:

@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));
   }

关于java - Android/Java 初学者 - 帮助了解 Intent 和添加两个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6273131/

相关文章:

java - 什么是NullPointerException,我该如何解决?

java.lang.NullPointerException 使用方法引用而不是 lambda 表达式引发

Java:大集合和并发线程

java - 嵌套对象和序列化

android - 在 android 中重复执行任务的最佳方法是什么? (例如 :- Refreshing scores, 更新用户界面)

android - ExoPlayer 有时会从 url 返回 mp3 文件的负持续时间

android - 将 actionbarsherlock 与 android-support-v4(版本 23)一起使用

java - 使用对象数组时出现 NullPointerException

java - 什么类直接实现ListIterator?

java - JAXB 接受重复标签