读书人

初学android第二个程序就是检查不出

发布时间: 2012-05-20 16:03:12 作者: rapoo

初学android,第二个程序就是检查不出错!求解、、;错误弹出对话框显示stoped unexpected,
Android Launch!
[2012-03-13 16:42:29 - Activity_03] adb is running normally.
[2012-03-13 16:42:29 - Activity_03] Performing mars.Activity03.Activity03 activity launch
[2012-03-13 16:42:29 - Activity_03] Automatic Target Mode: using existing emulator 'emulator-5554' running compatible AVD 'android1.6'
[2012-03-13 16:42:34 - Activity_03] Application already deployed. No need to reinstall.
[2012-03-13 16:42:34 - Activity_03] Starting activity mars.Activity03.Activity03 on device emulator-5554
[2012-03-13 16:42:38 - Activity_03] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=mars.Activity03/.Activity03 }

error:
E/AndroidRuntime(805): Uncaught handler: thread main exiting due to uncaught exception
(这个哪里会有异常??)
03-13 08:50:03.854: E/AndroidRuntime(805): java.lang.RuntimeException: Unable to start activity ComponentInfo{mars.Activity03/mars.Activity03.ResultActivity}: java.lang.NumberFormatException: unable to parse 'null' as integer(我在两个框里输入的都是整数,怎么不能转了?)


Activity03.java内容如下:

Java code
package mars.Activity03;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.*;public class Activity03 extends Activity {       private EditText factorOne,factorTwo;    private TextView symbol;    private Button calculate;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        //根据控件的ID来取得代表控件的对象        factorOne=(EditText)findViewById(R.id.factorOne);        factorTwo=(EditText)findViewById(R.id.factorTwo);        symbol=(TextView)findViewById(R.id.symbol);        calculate=(Button)findViewById(R.id.calculate);       // symbol.setText("乘以");        //calculate.setText("计算");        symbol.setText(R.string.symbol);        calculate.setText(R.string.calculate);        calculate.setOnClickListener(new CalculateListener());    }    class CalculateListener implements OnClickListener{        public void onClick(View arg0) {            // TODO Auto-generated method stub            //取得两个            String factorOneStr=factorOne.getText().toString();            String factorTwoStr=factorTwo.getText().toString();            Intent intent=new Intent();            intent.putExtra("one", factorOneStr);            intent.putExtra("two", factorTwoStr);            intent.setClass(Activity03.this, ResultActivity.class);            Activity03.this.startActivity(intent);            System.out.println("onClick--error");                    }        }}


对应main.xml如下:
XML code
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:orientation="vertical" ><EditText    android:id="@+id/factorOne"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    />    <TextView        android:id="@+id/symbol"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="@string/hello" /><EditText     android:id="@+id/factorTwo"    android:layout_width="fill_parent"    android:layout_height="wrap_content" /><Button    android:id="@+id/calculate"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    /></LinearLayout> 



ResultActivity。java内容如下:
Java code
package mars.Activity03;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.widget.TextView;public class ResultActivity extends Activity{        private TextView resultView=null;    protected void onCreate(Bundle savedInstanceState){        super.onCreate(savedInstanceState);        setContentView(R.layout.result);        System.out.println("resultActivity--error");        resultView=(TextView)findViewById(R.id.result);        Intent intent=getIntent();System.out.println("哪里错哦了!!");        String factorOneStr=intent.getStringExtra("one");        String factorTwoStr=intent.getStringExtra("Two");        int factorOneInt=Integer.parseInt(factorOneStr);        int factorTwoInt=Integer.parseInt(factorTwoStr);        int result=factorOneInt*factorTwoInt;        resultView.setText(result+"");        System.out.println("哪里错哦了!!--最后");    }}

对应result.xml如下:
XML code
<?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"    >        <TextView        android:id="@+id/result"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        /></LinearLayout>



string。xml如下:
XML code
<?xml version="1.0" encoding="utf-8"?><resources>    <string name="hello">Hello World, Activity03!</string>    <string name="app_name">Activity03</string>    <string name="resultLabel">ResultActivity</string>    <string name="symbol">乘以</string>    <string name="calculate">计算</string>        </resources>



AndroidManifest.xml如下:
XML code
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="mars.Activity03"    android:versionCode="1"    android:versionName="1.0" >    <uses-sdk android:minSdkVersion="4" />    <application        android:icon="@drawable/ic_launcher"        android:label="@string/app_name" >        <activity            android:name=".Activity03"            android:label="@string/app_name" >            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <activity android:name=".ResultActivity" android:label="@string/resultLabel"></activity>    </application></manifest>



[解决办法]
看,这里的two是小写
intent.putExtra("two", factorTwoStr);
这里的Two第一个字母是大写,所以得不到值,为空。
String factorTwoStr=intent.getStringExtra("Two");

大、 小写是有区别的噢。

------解决方案--------------------


探讨

看,这里的two是小写
intent.putExtra("two", factorTwoStr);
这里的Two第一个字母是大写,所以得不到值,为空。
String factorTwoStr=intent.getStringExtra("Two");

大、 小写是有区别的噢。

[解决办法]
4楼正解,楼主不仔细造成的

读书人网 >Android

热点推荐