Android/Java初学者-帮助了解意图并添加两个数字
我已经在这方面工作了好几天,我只是没有主意。 我到处找遍了,找到了那本书 我试着做一些简单的事情(我想),就是有两个文本框,用户在每个文本框中输入一个数字,然后按下一个按钮,数字的总和就会显示出来 我在stackoverflow上发现做了几乎完全相同的事情,并且在学习各种东西方面做得相当好,但我显然缺少一些非常基本的东西。如果我设置变量,我可以让文本视图显示一个总和,但我不知道如何获得用户输入 我得到的错误是EditText不能被解析为整数,即使我找到的所有东西都说使用我正在使用的toString方法。我想这可能是因为我不知道如何让应用程序等待解析它,直到点击按钮,这就是我想我是如何设置它的。所以本质上,它什么也不解析,当然,它不能被解析。啊 非常感谢您的帮助。请相信我已经搜索了,搜索了,阅读了,阅读了,我想我可能错过了一些重要的概念,不知道到底要搜索什么来获得帮助。我还做了一些其他的教程,但这真的让我发疯了Android/Java初学者-帮助了解意图并添加两个数字,java,android,nullpointerexception,parseint,Java,Android,Nullpointerexception,Parseint,我已经在这方面工作了好几天,我只是没有主意。 我到处找遍了,找到了那本书 我试着做一些简单的事情(我想),就是有两个文本框,用户在每个文本框中输入一个数字,然后按下一个按钮,数字的总和就会显示出来 我在stackoverflow上发现做了几乎完全相同的事情,并且在学习各种东西方面做得相当好,但我显然缺少一些非常基本的东西。如果我设置变量,我可以让文本视图显示一个总和,但我不知道如何获得用户输入 我得到的错误是EditText不能被解析为整数,即使我找到的所有东西都说使用我正在使用的toStrin
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>
您应该从活动内容中获取编辑文本,如下所示:
//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();
}
您尚未将Java
EditText
映射到XML中的文本。赋值number1=(EditText)findViewById(R.id.number1)
从XML布局中提取它。它应该和意图无关!他不需要意图,他也在做同样的事情。我想我应该把我的评论写在这里。我把我的1号和2号改成了你建议的方式,去掉了关于意图等的东西。我仍然有一些错误,但现在只是不同的:)。我猜是这样的。事实上,我只是在胡乱摆弄而已,我仍然会得到关于parseInt的错误。它说它无法解析“”。@Houcine。是的,我只是告诉莫莉改变题目和标签@Molly,如果它说它无法解析,很可能你在edittext中输入的字符串不是一个数字(或大于int的限制)好的-谢谢你,到目前为止…我今天早些时候就这样设置了edittext,但是仍然有错误,所以将它改回来了。无论如何,我现在得到以下错误:06-07 21:26:26.447:ERROR/AndroidRuntime(996):致命异常:main 06-07 21:26:26.447:ERROR/AndroidRuntime(996):java.lang.RuntimeException:无法启动活动组件信息{com.self.projectOne/com.self.projectOne.AddNumbers}:java.lang.ClassCastException:android.widget.TextView
int sum = int1 + int2;
//display the sum on the textView
textview.setText(String.valueOf(sum));
}