Android 笔记—1

Android 笔记—1

  • 控件
    • TextView
    • Button
    • EditTextView
  • Activity
    • Activity与布局文件的链接
    • Activity与控件的链接
    • 设置启动页
    • 延时启动
    • Activity间的数据传递

控件

TextView
TextView 是一种可以指定布局、宽高、字体大小、背景的文本框。

Button
Button由TextView派生而来,基本属性和TextView一致

EditText
EditText同样是由TextView派生而来,与TextView的主要差异在于EditText是一个输入文本框,Android的布局设计中提供了多种inputType的EditText控件。如:Password、Phone、Name等。

Activity

Activity与布局文件的链接

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.XXX);
}

如上段代码所示:在onCreate方法中使用setContentView方法通过R文件中的layout找到指定的布局文件(XXX代指布局文件)

Activity与控件的链接

 private Button mButton = (Button)findViewById(R.id.XXX_button);
 private View.OnClickListener mOnClickListener = new View.OnClickListener() {
     public void onClick(View v) {
         Toast.makeText(MainActivity.this, "啊,我被击中了", Toast.LENGTH_LONG).show();
 }
 mButton.setOnClickListener(mOnClickListener);

以Button为例,使用findViewById方法通过R文件中的id找到指定的Button并赋值给mButton,随后创建mOnCLickListener并实现OnClickListener接口并设置对点击操作的响应,最后mButton调用参数为mOnClickListener的setOnClickListener方法,完成了Activity对Button的链接并对点击操作做出响应。

设置启动页

<intent-filter>
    <action android:name="android.intent.action.MAIN" />

    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

在AndroidManifest.xml文件中找到设置为启动页的activity在activity中添加上段代码。

延时启动

Handler mHandler = new Handler();
mHandler.postDelayed(new Runnable() {
    @Override
    public void run() {
        //切换Activity;
        Intent intent = new Intent(XActivity.this,YActivity.class);
        startActivity(intent);
    }
}, 500);

通过Handler类中的postDelayed方法来达成延时启动(通过传递一个已实现的Runnable接口和延时时间)

Activity间的数据传递

发送的类:UserInfo

public class UserInfo implements Serializable{
    private String mUserName;
    private int mAge;

    public UserInfo(String mUserName, int mAge) {
        this.mUserName = mUserName;
        this.mAge = mAge;
    }
}

Android中进行Activity间的数据传递需要使用Intent类中的putExtra和getIntent方法。你会发现代码中new Intent时传递了两个参数XActivity.this和YActity.class,前者是发送方XActivity的对象后者是接收方YActity的对象。

发送方:XActivity

final String tittle = "...";
final REQUEST_CODE = 9999;
UserInfo userInfo = new UserInfo("小明", 12);
Intent intent = new Intent(XActivity.this, YActivity.class);
intent.putExtra("title", tittle);
intent.putExtra("userInfo", userInfo);

startActivityForResult(intent, REQUEST_CODE);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if(requestCode == REQUEST_CODE && resultCode ==YActivity.RESULT_CODE) {
            if(data != null) {
                String title = data.getStringExtra("title");
            }
        }
}

发送方传递数据时使用putExtra(String name, 类型 value)方法,接收方通过name提取value。除了传递Java的基础类型,还需要传递对象,如UserInfo类所示可以通过给类实现Serializable接口,然后使用putExtra(String name, Serializable value) 传递对象。接收方通过getIntent()方法获取发送方的Intent对象并判断是否为空,get类型Extra()方法获取指定类型数据;如:getSerializableExtra(String name)。

接收方:YActivity

final RESULT_CODE;
Intent intent = getIntent();
if (intent != null) {
    String title = intent.getStringExtra("title");
    UserInfo userInfo = (UserInfo)intent.getSerializableExtra("userInfo");
    Intent backIntent = new Intent();
    backIntent.putExtra("title", "YActivity的回传数据");
    setResult(RESULT_CODE, backIntent);
}

继续到发送方代码的下半段,会发现使用了两个方法:startActivityForResult和onActivityResult。startActivityForResult方法和延时启动代码中的startActivity类似,后者通过Intent进行Activity的切换,前者除了进行Activity的切换还发送了一条请求代码(REQUEST_CODE )。接收方新建了一个Intent对象 backIntent,backIntent使用putExtra方法放入name和value,再通过setResult方法传送回执代码(RESULT_CODE)和backIntent,发送方通过onActivityResult方法接收回传数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值