android(2):添加控件与显示问题+功能直接的关系

来源:互联网 发布:指针可以当数组用吗 编辑:程序博客网 时间:2024/05/16 23:47

Android的界面是由一个个Activity组成的。

 

刚创建一个新的android界面的时候,就会自动创建一个Activity。Activity可以理解成为一个窗体,在上面放一些控件,就可以组成一般的程序了。

 

若想在Activity界面内放控件(界面布局),必先在项目目录下的  res->layout->内的XML文件里面,一个XML文件可以对应一个Activity,也可以对应多个Activity,可以理解为,layout内的XML文件就是专门管理Activity控件的。(Activity要用到某个布局时,必须在其onCreat代码中进行绑定,否则将会无效(不显示))

XML文件内要注意使用的布局方式,需要添加设定布局的排列方式,例如, 因为漏掉了一句 android:orientation="vertical" 而导致界面一直不能像自己想象中的那样,故特此标记一下。还有XML文件还可以切换到可视化界面(注:第一次打开时是一个可视化的界面)这个在左下角可以进行切换,  刚开始学,还是先用XML的方式来进行布局,可以帮助自己对程序的理解。

 

具体为:


关于新创建的Activity,新建的方式是 右键包名-->新建类。

选择其所在的位置,名字,确定即可。(如图,都放到一个包)


然后让这个类继承Activity(注:最好使用IDE智能提示,这样会自动import进Activity,然后重写On Create(Bundle) 函数)


新创建好Activity之后,最好也在layout下新建一个与其对应的XML文件,此时新建的XML文件是空白的,可以将第一个XML文件的内容复制过去在修改成自己所需要添加的控件。

 

新建好Activity之后,需要在项目的 AndroidManifest.xml 文件内进行注册,具体方式是在 AndroidManifest.xml下<activity></activity>结点后面添加一对新的<activity></activity>

然后把android:name修改成这个类的路径(注:可以把第一个activity结点的内容复制下来,直接根据路径修改成新的activity的路径)

第一对activity结点内会包含一对 <intent-filter></intent-filter>标记(进行一些功能的使用确认,详细请看后面一节),只是带有这对结点的<activity></activity>(Activity)会被第一个启动。(如果不进行注册,则在AVD中生成APP中将会出现

注册如下:




关于Activity之间的通信 ------   Intent

可以在Activity之间进行通信。稍后的一个加法程序内代码里面具体体现。

 

关于按钮事件,在android称为监听器,  要使用内部类来实现OnClickListener接口

 

以下代码是一个简单的加法程序的代码(有布局、按钮监听器、Activity之间的通信)

 

主Activity的相关代码:

 

[java] view plain copy
 print?
  1. import android.os.Bundle;  
  2. import android.app.Activity;  
  3. import android.content.Intent;  
  4. import android.view.Menu;  
  5. import android.view.View;  
  6. import android.view.View.OnClickListener;  
  7. import android.widget.Button;  
  8. import android.widget.EditText;  
  9. import android.widget.TextView;  
  10.   
  11. public class MainActivity extends Activity {  
  12.       
  13.     private EditText firstEditText;  
  14.       
  15.     private TextView myTextView;  
  16.       
  17.     private EditText secondEditText;  
  18.   
  19.     private Button myButton;  
  20.   
  21.     @Override  
  22.     protected void onCreate(Bundle savedInstanceState) {  
  23.         super.onCreate(savedInstanceState);  
  24.         setContentView(R.layout.activity_main);  //绑定布局文件
  25.         firstEditText = (EditText)findViewById(R.id.firstEditText);  
  26.         myTextView = (TextView)findViewById(R.id.myTextView);    //将控件变量实例化
  27.         myTextView.setText("加上");  
  28.         secondEditText = (EditText)findViewById(R.id.secondEditText);  
  29.         myButton = (Button)findViewById(R.id.myButton);  
  30.         myButton.setText("点击");  
  31.         //将按钮和监听事件进行绑定  
  32.         myButton.setOnClickListener(new MyButtonListener());  
  33.           
  34.     }  
  35.       
  36.     //内部类实现按钮事件的监听接口  
  37.     class MyButtonListener implements OnClickListener{  
  38.   
  39.         @Override  
  40.         public void onClick(View v) {  
  41.             // TODO Auto-generated method stub  
  42.             String first = firstEditText.getText().toString();     //获得控件中的字符串
  43.             String second = secondEditText.getText().toString();  
  44.             //Activity之间通信---Intent的实例  
  45.             Intent intent = new Intent();//新建一个Intent实例  
  46.             //Intent提供传递 键-值 对  
  47.             intent.putExtra("first", first);  
  48.             intent.putExtra("second", second);  
  49.             //下面语句可以理解为 将Intent从哪个(第一个参数)Activity中传递到哪个(第二个参数)Activity中  
  50.             intent.setClass(MainActivity.this, Result.class);  
  51.             //将此Activity选择启动哪个Activity  
  52.             MainActivity.this.startActivity(intent);      
  53.         }  
  54.           
  55.           
  56.     }  
  57.       
  58. }  


 

主Activity的控件配置XML文件的代码:

[java] view plain copy
 print?
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="match_parent"  
  5.     android:layout_height="match_parent"  
  6.     tools:context=".MainActivity" >  
  7.   
  8. <EditText   
  9.     android:id="@+id/firstEditText"  
  10.     android:layout_width="fill_parent"  
  11.     android:layout_height="wrap_content"  
  12.     />  
  13. <TextView   
  14.     android:id="@+id/myTextView"  
  15.     android:layout_width="fill_parent"  
  16.     android:layout_height="wrap_content"  
  17.     />  
  18. <EditText   
  19.     android:id="@+id/secondEditText"  
  20.     android:layout_width="fill_parent"  
  21.     android:layout_height="wrap_content"  
  22.     />  
  23. <Button   
  24.     android:id="@+id/myButton"  
  25.     android:layout_width="fill_parent"  
  26.     android:layout_height="wrap_content"  
  27.     />  
  28.   
  29. </LinearLayout>  


 

显示结果的Activity的相关代码:

[java] view plain copy
 print?
  1. import android.app.Activity;  
  2. import android.content.Intent;  
  3. import android.os.Bundle;  
  4. import android.widget.TextView;  
  5.   
  6. public class Result extends Activity{  
  7.       
  8.     private TextView myTextView = null;  
  9.       
  10.     @Override  
  11.     protected void onCreate(Bundle savedInstanceState) {  
  12.         // TODO Auto-generated method stub  
  13.         super.onCreate(savedInstanceState);  
  14.         setContentView(R.layout.result_main);  
  15.         myTextView = (TextView)findViewById(R.id.myTextView2);  
  16.         //创建一个Intent实例来接收从上一个Activity里接收到的数据  
  17.         Intent intent = getIntent();  
  18.         //把传过来的 键值对取出来  
  19.         String first = intent.getStringExtra("first");  
  20.         String second = intent.getStringExtra("second");  
  21.           
  22.         int myFirst = Integer.parseInt(first);  
  23.         int mySecond = Integer.parseInt(second);  
  24.           
  25.         myTextView.setText((myFirst+mySecond) + " ");  
  26.     }  
  27.   
  28. }  


 

显示结果控件配置XML的相关代码:

[java] view plain copy
 print?
  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     tools:context=".Result" >  
  6.   
  7. <TextView   
  8.     android:id="@+id/myTextView2"  
  9.     android:layout_width="fill_parent"  
  10.     android:layout_height="wrap_content"  
  11.     />  
  12.   
  13. </LinearLayout>  


 结果如下:

主activity界面:


结果activity界面:



总的来说,需要注意 布局的关联,以及各个activity之间的关系还有其自己的注册。

0 0
原创粉丝点击