右键layout目录new->Android XML File,取名为plus.xml,先使用最简单的线性布局(LinearLayout)

然后加法需要2个输入的框框和一个提交按钮。

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:layout_width="match_parent" //布局的宽度,match_parent表示充满它的父控件,另外还有fill_parent和wrap_content(根据其内容改变宽度)
  4.     android:layout_height="match_parent" 
  5.     android:orientation="vertical" > //布局的方向,vertical:其内的控件垂直布局,horizontal:水平布局
  6.  
  7.     <EditText //第一个控件EditText:编辑文本框
  8.         android:id="@+id/num1" // @+id/ + id 的格式是给控件指定一个id,这个id会在R.java自动生成,这样就可以在代码里按id找到这个控件了。
  9.         android:layout_width="match_parent" 
  10.         android:layout_height="wrap_content" 
  11.         android:ems="10" //设置Edittext的宽度为10个字符的宽度
  12.         android:inputType="number"> // 文本框输入的类型,这里选择number就只能输入数字了,其他还有好多类型,可以察看文档
  13.         <requestFocus /> //设置一个画面初始的焦点,一个文件只能有一个这个标签
  14. /*原文档<requestFocus>Any element representing a View object can include this empty element,which gives it's parent initial focus on the screen. You can have only one of these elements per file.*/
  15.     </EditText> 
  16.  
  17.      <EditText //第二个控件EditText
  18.         android:id="@+id/num2" 
  19.         android:layout_width="match_parent" 
  20.         android:layout_height="wrap_content" 
  21.         android:ems="10" 
  22.         android:inputType="number" > 
  23.     </EditText> 
  24.     <Button  //第三个控件Button:按钮
  25.         android:id="@+id/bPlus" //指定按钮的id
  26.         android:layout_width="match_parent" 
  27.         android:layout_height="wrap_content" 
  28.         android:layout_gravity="center" //gravity是重力的意思,这里就是对齐位置,layout_gravity是本控件相对父控件的对齐方式
  29. android:gravity="center" //这是本控件内容相对控件的对齐方式
  30.         android:text="@string/plus" //这是控件的显示内容,可以直接写字符串如:android:text="相加"
  31. //也可以想这么写@string/plus,说明是引用了string.xml里name为plus的常量,推荐这么写,方便维护
  32.         /> 
  33.      
  34. </LinearLayout> 

fill_parent,match_parent,wrap_content三者区别可以看这里。

http://blog.sina.com.cn/s/blog_4ca9ceef0100zwc9.html

下面看一下string.xml

  1. <resources> 
  2.     <string name="app_name">Plus</string> 
  3.     <string name="plus">相加</string> //上面的Button引用后显示的就是相加
  4.     <string name="result">结果</string> 
  5. </resources> 

这里的值也会在R.java中生成相应的id,所以也可以在代码中直接按R.string.+ name引用到。

这样一个布局文件就写好了呢。

然后还要建一个result.xml的布局文件,这个文件非常简单,就是显示相加的结果。

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     android:layout_width="match_parent" 
  4.     android:layout_height="match_parent" 
  5.     android:orientation="vertical" > 
  6.     <TextView  //这是一个TextView,就像html一个label一样
  7.         android:id="@+id/tvResult" 
  8.         android:layout_width="match_parent" 
  9.         android:layout_height="match_parent" 
  10.         android:textIsSelectable="true" 
  11.         android:textSize="50sp" 
  12.         android:textColor="#FF0000" 
  13.         android:gravity="center_vertical|center_horizontal" //这样写说明内容水平方向居中和垂直方向也居中
  14.         /> 
  15.  
  16. </LinearLayout> 

唉,放了一个很大的错误,xml的注释不是这样的,我是在这里写的,习惯了代码的注释

下面就写第一个PlusActivity.java

  1. package learn.plus; 
  2.  
  3. import android.app.Activity; 
  4. import android.content.Intent; 
  5. import android.os.Bundle; 
  6. import android.view.View; 
  7. import android.view.View.OnClickListener; 
  8. import android.widget.Button; 
  9. import android.widget.EditText; 
  10.  
  11. public class PlusActivity extends Activity { 
  12.  
  13.     // 定义2个EditText和一个Button控件 
  14.     private EditText text1, text2; 
  15.     private Button bPlus; 
  16.  
  17.     @Override 
  18.     protected void onCreate(Bundle savedInstanceState) { 
  19.         super.onCreate(savedInstanceState); 
  20.         // 设置这个Activity的布局,直接使用R.layout.plus就可以设置了 
  21.         setContentView(R.layout.plus); 
  22.         // findViewById(id)这个id就是我们在布局文件里控件的id,然后需要强转成EditText 
  23.         // 这样就可以去到3个控件的对象了 
  24.         text1 = (EditText) findViewById(R.id.num1); 
  25.         text2 = (EditText) findViewById(R.id.num2); 
  26.         bPlus = (Button) findViewById(R.id.bPlus); 
  27.         /* 
  28.          * 这是给按钮设置监听onclick事件,和html中onclick=“function()”类似 
  29.          * BPlusClick()是一个内部类需要实现OnClickListener接口中的onClick(View v)方法。 
  30.          * 不过也可以不定义这个内部类,可以采用匿名内部类的方式 bPlus.setOnClickListener(new 
  31.          * OnClickListener() { 
  32.          *  
  33.          * @Override public void onClick(View v) { 
  34.          *  
  35.          * //do something 
  36.          *  
  37.          * } }); 这样写也是ok 
  38. * 这样就点击按钮的时候就会执行onClick方法了
  39.          */ 
  40.         bPlus.setOnClickListener(new BPlusClick()); 
  41.     } 
  42.  
  43.     class BPlusClick implements OnClickListener { 
  44.  
  45.         @Override 
  46.         public void onClick(View v) { 
  47.             /* 
  48.              * new 一个Intent对象 源文档:An intent is an abstract description of an 
  49.              * operation to be performed 
  50.              * Intent就像是一个装满数据的卡车,从一个地方运到另一个地方,这些地方可以是Activity,service或者其他程序等等。 
  51.              */ 
  52.             Intent toResult = new Intent(); 
  53.             // 取得2个文本的值,相当于javascript中的document.getElementById('id').value 
  54.             String str1 = text1.getText().toString(); 
  55.             String str2 = text2.getText().toString(); 
  56.  
  57.             if ((!"".equals(str1)) && (!"".equals(str2))) { 
  58.  
  59.                 // Intent的方法,现在把它理解成是一个Map就好了,Map.put(key,value); 
  60.                 toResult.putExtra("num1", str1); 
  61.                 toResult.putExtra("num2", str2); 
  62.  
  63.                 // 然后将2个Activity关联起来,PlusActivity.this表示当前Activity对象,和ResultActivity.class参数 
  64.                 toResult.setClass(PlusActivity.this, ResultActivity.class); 
  65.  
  66.                 // 最后使用当前Activity对象的startActivity(Intent 
  67.                 // intent)方法打开ResultActivity 
  68.                 PlusActivity.this.startActivity(toResult); 
  69.             } 
  70.         } 
  71.  
  72.     } 

感觉挺清晰了呢。

下面是ResultActivity.java

  1. package learn.plus; 
  2.  
  3. import android.app.Activity; 
  4. import android.content.Intent; 
  5. import android.os.Bundle; 
  6. import android.widget.TextView; 
  7.  
  8. public class ResultActivity extends Activity { 
  9.     // 定义一个TextView 
  10.     private TextView tv; 
  11.  
  12.     @Override 
  13.     protected void onCreate(Bundle savedInstanceState) { 
  14.         super.onCreate(savedInstanceState); 
  15.         // 设置布局 
  16.         setContentView(R.layout.result); 
  17.  
  18.         // getIntent()得到传过来的Intent对象 
  19.         Intent fromPlusIntent = getIntent(); 
  20.  
  21.         tv = (TextView) findViewById(R.id.tvResult); 
  22.         // 根据key得到其中的value 
  23.         String num1Str = fromPlusIntent.getStringExtra("num1"); 
  24.         String num2Str = fromPlusIntent.getStringExtra("num2"); 
  25.         String resultStr = "error"
  26.         try { 
  27.             // parseInt出错的话就直接显示error 
  28.             int num1 = Integer.parseInt(num1Str); 
  29.             int num2 = Integer.parseInt(num2Str); 
  30.             resultStr = num1 + num2 + ""
  31.         } catch (Exception e) { 
  32.         } finally { 
  33.             tv.setText(resultStr); 
  34.         } 
  35.     } 

还有最重要的一步,就是要在AndroidManifest.xml中配置这2个Activity,要使用到Activity都需要在这个xml中配置过。

  1. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  2.     package="learn.plus" 
  3.     android:versionCode="1" 
  4.     android:versionName="1.0" > 
  5.  
  6.     <uses-sdk 
  7.         android:minSdkVersion="11" 
  8.         android:targetSdkVersion="17" /> 
  9.  
  10.     <!-- activity 配置在<application>内 --> 
  11.     <application 
  12.         android:allowBackup="true" 
  13.         android:icon="@drawable/ic_launcher" 
  14.         android:label="@string/app_name" 
  15.         android:theme="@style/AppTheme" > 
  16.  
  17.         <!-- PlusActivity --> 
  18.         <activity 
  19.             android:name="learn.plus.PlusActivity" 
  20.             android:label="@string/app_name" > 
  21.  
  22.             <!-- android:name 完整类名 --> 
  23.             <!-- android:label  此Activity运行时显示的title --> 
  24.             <!-- 在<intent-filter>中加入下面的配置,说明这个Activity是程序运行开始的界面,相当于欢迎界面 --> 
  25.             <intent-filter> 
  26.                 <action android:name="android.intent.action.MAIN" > 
  27.                 </action> 
  28.  
  29.                 <category android:name="android.intent.category.LAUNCHER" > 
  30.                 </category> 
  31.             </intent-filter> 
  32.         </activity> 
  33.         <!-- ResultActivity --> 
  34.         <activity 
  35.             android:name="learn.plus.ResultActivity" 
  36.             android:label="@string/result" > 
  37.         </activity> 
  38.     </application> 
  39.  
  40. </manifest> 

好了运行一下吧。

困死了睡觉