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

【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+"" );
      }
}





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



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值