[笔记][andriod开发]基本控件和Activity基础

来源:互联网 发布:淘宝上怎么换货啊 编辑:程序博客网 时间:2024/06/05 15:41

【01.05】Activity和Intent

1、多个Activity之间的关系
Activity01------>Activity02
调用Activity01.startActivity(intent)

一个Intent对象包含的信息
  • Component name:区分是哪一个Activity
  • Action:启动了一个Activity后,采取什么动作
  • Data:一个Activity向另外一个Activity传递什么数据
  • Extras:额外的变量,是一些键值对,进行交互
  • Category
  • Flags

例子:(例子写了三遍,各种出错 汗……)

Tips:
要想eclipse在打任何字母都提示,在windows-preferences-java-editor-content  assist里有个auto activation trigger for Java,里面写上abcdefghijklmnopqrstuvwxyz.,如果大写字母也想提示,也写上一大串大写字母吧 [´・ω・`]
有些地方会提示出错,点击出错的小标签,会告诉你怎么样纠正这个错误,一般是缺少包引用或者函数名有更改(改朝换代好快[´・ω・`]

用的eclipse4.2.1
api为2.2的
有些地方和视频不太一样

1、创建一个andriod application project,系统自动生成相关文件
2、在activity_main.xml中加上一个按钮文件
< LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android"
    xmlns:tools= "http://schemas.android.com/tools"
    android:layout_width= "match_parent"
    android:layout_height= "match_parent" >
        < Button
           android:layout_width ="fill_parent"
           android:layout_height ="wrap_content"
           android:id ="@+id/mybutton"
           android:text ="@string/clickbutton"
           />
</ LinearLayout>
3、在MainActivity.java中对OnCreate函数进行复写
    
public void onCreate(Bundle savedInstanceState) {        super .onCreate(savedInstanceState);        setContentView(R.layout. activity_main );        mybt = (Button)findViewById(R.id.mybutton);        mybt .setOnClickListener( new mybuttonClickListener());     //这是第六步做到的~    }


4、在com.example.activity03包下创建新的文件,new->class,取名为OtherActivity,生成新的文件OtherActivity.java
4.1:
在AndroidMainfest.xml中注册这个Activity
< activity
            android:name =".OtherActivity"
            android:label ="@string/otheractivity" ></ activity>
4.2:
需要用到的资源先创建,在Layout文件夹下创建对应的布局文件:activity_other.xml,放入一个TextView控件
< LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android"
    xmlns:tools"http://schemas.android.com/tools"
    android:layout_width"match_parent"
    android:layout_height"match_parent" >
        < TextView
           android:layout_width ="fill_parent"
           android:layout_height ="wrap_content"
           android:id ="@+id/mytextview"
           android:text ="@string/otheractivity"
           />
</ LinearLayout>

4.3:回到OtherActivity.java,使这个类继承Activity,并复写OnCreate方法,对TextView进行操作

package com.example.activity03;import android.app.Activity;import android.os.Bundle;import android.widget.*;public class OtherActivity extends Activity {       private TextView mytv = null;       @Override       protected void onCreate(Bundle savedInstanceState) {             super .onCreate(savedInstanceState);            setContentView(R.layout. activity_other );             mytv = (TextView)findViewById(R.id. mytextview);             mytv .setText(R.string. otheractivity);      }}


5、两个Activity已经准备好了,接下来需要对按钮绑定一个动作,在MainActivity.java的MainActivity函数中添加如下类,创建一个Intent对象,并添加需要跳转的Activity,再从这个Activity启动跳转

class mybuttonClickListener implements android.view.View.OnClickListener{             public void onClick(View arg0) {                   // TODO Auto-generated method stub                  Intent intent = new Intent();                  intent.setClass( MainActivity. this, OtherActivity.class );                   MainActivity. this.startActivity(intent);            }          }  



6、点击动作已经准备好,接下来将这个动作绑定到按钮上

mybt .setOnClickListener( new mybuttonClickListener());


完成~启动~

例子变体:
Intent是可以添加Extra键值对的,记得么~现在要做到的是把一个键值对从MainActivity传递到OtherActivity中

其他不变,回到mybuttonClickListener类中,将一个键值对放入intent里
intent.putExtra( "testIntent" , "here is the value in intent" );

再在OtherActivity中创建一个Intent类的对象,取出这个intent
Intent intent = getIntent();

在OtherActivity的TextView中表现出这个键值
mytv .setText(intent.getStringExtra( "testIntent"));


结果如下:



【01.06】常用控件

1、TextView
2、EditView
3、Button
4、Menu

还是通过例子来理解吧~目标如图↓


1、创建一个android application project,在主框架中声明四个控件
activity_main.xml
< LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android"
    xmlns:tools= "http://schemas.android.com/tools"
    android:layout_width= "fill_parent"
    android:layout_height= "fill_parent" >
    <EditText
        android:layout_width ="fill_parent"
        android:layout_height ="wrap_content"
        android:id ="@+id/inputOne" />
    <TextView
        android:layout_width ="fill_parent"
        android:layout_height ="wrap_content"
        android:id ="@+id/label"
        android:text ="@string/init_word" />
        < EditText
           android:layout_width ="fill_parent"
           android:layout_height ="wrap_content"
           android:id ="@+id/inputTwo" />
        < Button
           android:layout_width ="fill_parent"
           android:layout_height ="wrap_content"
           android:id ="@+id/showResult"
           android:text ="@string/result_button"
           />
</ LinearLayout>

2、创建另外一个Activity,为ResultActivity
2.1:在包com.example.activity04中新建class,命名为ResultActivity.java
2.2:在layout文件夹中新建对应的xml资源文件,命名为result_activity.xml,并放入一个TextView控件用于显示结果
< LinearLayout xmlns:android ="http://schemas.android.com/apk/res/android"
    xmlns:tools= "http://schemas.android.com/tools"
    android:layout_width= "fill_parent"
    android:layout_height= "fill_parent" >
    <TextView
        android:layout_width ="fill_parent"
        android:layout_height ="wrap_content"
        android:id ="@+id/resultLabel" />
</ LinearLayout>
2.3:在ResultActivity中复写OnCreate方法,初始化Activity和TextView控件
2.4:别忘了在AndroidMainfest.xml中注册ResultActivity

3、回到MainActivity中,初始化四个控件,并创建一个监听器,复写一个菜单的回调函数
package com.example.activity04;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;import android.widget.*;public class MainActivity extends Activity {       private EditText inputOne = null;       private EditText inputTwo = null;       private TextView label = null ;       private Button showResult = null;    @Override    public void onCreate(Bundle savedInstanceState) {        super .onCreate(savedInstanceState);        setContentView(R.layout. activity_main );               inputOne = (EditText)findViewById(R.id. inputOne);        inputTwo = (EditText)findViewById(R.id. inputTwo);        label = (TextView)findViewById(R.id. label );        showResult =(Button)findViewById(R.id. showResult);               //这个地方是视频里这样写的,但是实际上这样写却会出错ORZ        //label.setText(R.string.init_word);        //showResult.setText(R.string.result_button);        //具体原因是由于我在 xml资源文件中已经写入了相应的text引用,重复的话就会报错        //如果资源文件中控件的android:text对应的string不是以下两项则不会报错               //监听器动作绑定        showResult .setOnClickListener( new CalculateListener());    }    //复写菜单键对应方法    @Override    public boolean onCreateOptionsMenu(Menu menu) {       // TODO Auto-generated method stub       //参数为 菜单的组序号、对应按钮的序号、对应按钮的      menu.add(0, 1, 1, R.string. about );      menu.add(0, 2, 2, R.string. exit );       return super .onCreateOptionsMenu(menu);    }     //对应菜单-退出的方法    @Override    public boolean onOptionsItemSelected(MenuItem item) {       // TODO Auto-generated method stub       if(item.getItemId()==1){            finish();      }       return super .onOptionsItemSelected(item);    }    class CalculateListener implements android.view.View.OnClickListener{       public void onClick(View arg0) {             // TODO Auto-generated method stub             //取得两个控件的值            String s1 = inputOne .getText().toString();            String s2 = inputTwo .getText().toString();             //将值存放到Intent对象中            Intent intent = new Intent();            intent.putExtra( "one" , s1);            intent.putExtra( "two" , s2);             //设置intent的activity            intent.setClass(MainActivity. this ,ResultActivity. class );             //调用activity的启动动作            MainActivity. this .startActivity(intent);      }    }}


4、到ResultActivity中,进行Intent对象数据的接受和计算
package com.example.activity04;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;       @Override       protected void onCreate(Bundle savedInstanceState) {             // TODO Auto-generated method stub             super .onCreate(savedInstanceState);            setContentView(R.layout. result_activity );             //初始化 Textview             resultview = (TextView)findViewById(R.id. resultLabel);                         //1、接受MainActivity中传递过来的值            Intent intent = getIntent();            String s1 = intent.getStringExtra( "one" );            String s2 = intent.getStringExtra( "two" );             int i1 = Integer.parseInt(s1);             int i2 = Integer.parseInt(s2);             //2、计算             int r = i1 * i2;             //3、显示结果(将 int转换成String~             resultview .setText(r+"" );      }}





大概就是如上,多做几遍就熟练了[´・ω・`]