您的位置:首页 > 移动开发 > Android开发

Android学习实践:7.使用布局文件进行事件绑定

2015-09-24 19:37 531 查看
之前响应Button的OnClick事件,都是实现了OnClickListener接口的OnClick方法来实现,其实还有更简单的方法,在布局文件的xml中进行配置。在对应的控件中加入属性 android:onClick,其值就是响应事件的方法名:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="maxwoods.demo1.MainActivity" >
<TextView
android:id="@+id/text1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hello_world"
android:textColor="#0000FF"
android:textSize="16pt"/>
<!-- 加入button1 -->
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/action_openactivity"
android:onClick="onClick"/>
<!-- 加入子布局 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<!-- 加入button2 -->
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#FF0000"
android:text="@string/action_phoneCall"
android:onClick="onClick"/>
<!-- 加入button3 -->
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="#00FF00"
android:text="@string/action_sendSMS"
android:onClick="onClick"/>
</LinearLayout>
</LinearLayout>


现在回到MainActivity.java,去掉OnClickListener接口还有相应的setOnClickListener语句,当然这里的方法名可以不用是onClick,可以改为其它名字,不过对应的布局文件中的android:onClick中的值也要修改:

package maxwoods.demo1;

import maxwoods.demo1.R;
import android.app.AlertDialog;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.support.v7.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity
{
public void onClick(View v)
{
Intent intent;
Uri uri;
switch(v.getId())
{
case R.id.button1:
intent=new Intent();
intent.setClass(this, MyActivity.class);
startActivity(intent);
break;
case R.id.button2:
uri=Uri.parse("tel:1008611");
intent=new Intent(Intent.ACTION_CALL,uri);
startActivity(intent);
break;
case R.id.button3:
uri=Uri.parse("smsto:1008611");
intent=new Intent(Intent.ACTION_SENDTO,uri);
startActivity(intent);
break;
}
}

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu)
{
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings)
{
return true;
}
switch(id)
{
case R.id.action_about:
StringBuilder sb=new StringBuilder();
sb.append("手机型号:".concat(android.os.Build.MODEL).concat("\n"));
sb.append("SDK版本:".concat(Integer.toString(android.os.Build.VERSION.SDK_INT)).concat("\n"));
sb.append("系统版本:".concat(android.os.Build.VERSION.RELEASE).concat("\n"));
sb.append("源码控制版本:".concat(android.os.Build.VERSION.INCREMENTAL).concat("\n"));
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.app_name);
builder.setMessage(sb.toString());
builder.setPositiveButton("确定",null);
builder.create().show();
break;
case R.id.action_exit:
android.os.Process.killProcess(android.os.Process.myPid());
break;
}
return super.onOptionsItemSelected(item);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: