Intent的4种传值方法总结

xml 代码:

<Button

    android:id="@+id/button1"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="Button1" />

  <Button

    android:id="@+id/button2"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="Button2" />

第一种:匿名内部类

public class TestButtonActivity extends Activity {

  Button btn1, btn2;

  Toast tst;

  @Override

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_test_button);

    btn1 = (Button) findViewById(R.id.button1);

    btn2 = (Button) findViewById(R.id.button2);

    btn1.setOnClickListener(new OnClickListener() {

      @Override

      public void onClick(View v) {

        // TODO Auto-generated method stub

        Toast tst = Toast.makeText(TestButtonActivity.this, "111111111", Toast.LENGTH_SHORT);

        tst.show();

      }

    });

    btn2.setOnClickListener(new OnClickListener() {

      @Override

      public void onClick(View v) {

        // TODO Auto-generated method stub

        Toast tst = Toast.makeText(TestButtonActivity.this, "222222222", Toast.LENGTH_SHORT);

        tst.show();

      }

    });

  }

}

第二种 :自定义单击监听事件

public class TestButtonActivity extends Activity {

  Button btn1, btn2;

  Toast tst;

  class MyClickListener implements OnClickListener {

    @Override

    public void onClick(View v) {

      // TODO Auto-generated method stub

      switch (v.getId()) {

      case R.id.button1:

        tst = Toast.makeText(TestButtonActivity.this, "111111111", Toast.LENGTH_SHORT);

        tst.show();

        break;

      case R.id.button2:

        tst = Toast.makeText(TestButtonActivity.this, "222222222", Toast.LENGTH_SHORT);

        tst.show();

        break;

      default:

        break;

      }

    }

  }

  @Override

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_test_button);

    btn1 = (Button) findViewById(R.id.button1);

    btn2 = (Button) findViewById(R.id.button2);

    btn1.setOnClickListener(new MyClickListener());

    btn2.setOnClickListener(new MyClickListener());

  }

}

第三种:

Activity继承View.OnClickListener,由Activity实现OnClick(View view)方法,

在OnClick(View view)方法中用switch-case对不同id代表的button进行相应的处理

public class TestButtonActivity extends Activity implements OnClickListener {

  Button btn1, btn2;

  Toast tst;

  @Override

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_test_button);

    btn1 = (Button) findViewById(R.id.button1);

    btn2 = (Button) findViewById(R.id.button2);

    btn1.setOnClickListener(this);

    btn2.setOnClickListener(this);

  }

  @Override

  public void onClick(View v) {

    // TODO Auto-generated method stub

    switch (v.getId()) {

    case R.id.button1:

      tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT);

      tst.show();

      break;

    case R.id.button2:

      tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT);

      tst.show();

      break;

    default:

      break;

    }

  }

}

第四种:在XML文件中“显示指定按钮的onClick属性,

这样点击按钮时会利用反射的方式调用对应Activity中的click()方法”

<Button

    android:id="@+id/button1"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:onClick="onClick"

    android:text="Button1" />

  <Button

    android:id="@+id/button2"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:onClick="onClick"

    android:text="Button2" />

public class TestButtonActivity extends Activity {

  Button btn1, btn2;

  Toast tst;

  @Override

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_test_button);

  }

  // 注意 这里没有 @Override 标签

  public void onClick(View v) {

    // TODO Auto-generated method stub

    switch (v.getId()) {

    case R.id.button1:

      tst = Toast.makeText(this, "111111111", Toast.LENGTH_SHORT);

      tst.show();

      break;

    case R.id.button2:

      tst = Toast.makeText(this, "222222222", Toast.LENGTH_SHORT);

      tst.show();

      break;

    default:

      break;

    }

  }

}

按钮少的时候用匿名内部类会比较快,比如写demo测试的时候或者登陆界面之类的。

按钮多的情况我还是选择第三种方法,方便。

关于第四种方法,我感觉最方便,但看了很多代码还是觉得写法不够大众化,感兴趣的朋友可以对此研究研究。

时间: 2024-10-11 21:13:15

Intent的4种传值方法总结的相关文章

asp.net 几种传值方法的分析

本文转自:http://www.cnblogs.com/shengtianlong/archive/2010/08/11/1797608.html ASP.NET页面传值方法的优缺点及适用范围 1. Get(即使用QueryString显式传递)     方式:在url后面跟参数.     特点:简单.方便.     缺点:字符串长度最长为255个字符:数据泄漏在url中.     适用数据:简单.少量.关键的数据.     适用范围:传递给自己.传递给另一个目标页面:常用于2个页面间传递数据.

ASP.NET页面之间的几种传值方法

首先是QueryString方法传值: QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法.但是对于传递数组或对象的话,就不能用这个方法了. 这种方法的优点:1.使用简单,对于安全性要求不高时传递数字或是文本值非常有效. 这种方法的缺点:1.缺乏安全性,由于它的值暴露在浏览器的URL地址中的. 2.不能传递对象. 使用方法:1.在源页面的代码中用需要传递的名称和值构造URL地址. 2.在

Android Intent的几种使用方法全面总结

Intent应该算是Android中特有的东西.你能够在Intent中指定程序要运行的动作(比方:view,edit,dial),以及程序运行到该动作时所须要的资料.都指定好后,仅仅要调用startActivity(),Android系统会自己主动寻找最符合你指定要求的应用程序,并运行该程序. 以下列出几种Intent的使用方法 显示网页: Uri uri = Uri.parse("http://www.google.com"); Intent it = new Intent(Inte

ASP.NET MVC 四种传值方法

1.后台传值: 1 public class DataController : Controller 2 { 3 // GET: Data 4 public ActionResult Index() 5 { 6 //1 ViewData传值 7 ViewData["name1"] = "张三"; 8 9 //2 ViewBag.name 10 ViewBag.name = "李四"; 11 12 //3.TempData["name&q

Asp.net页面之间几种传值方法【示例】

1.Request.QueryString 在传值的页面(aspx.cs页面): Response.Redirect("QueryStringPage.aspx?Data=" + Server.UrlEncode(DataToSendTextBox.Text)); 在接收值的页面(.net前端页面): <%=Server.UrlDecode(Request.QueryString["Data"]) %> 2.HttpPost 在传值的页面(aspx页面)

storyboard中的三种传值

三种传值:属性传值 block传值 以及 代理传值 (这里我用前面的页面和后面的)来表示两个控制器:LoginViewController和RegisterViewController 建立两个控制器:LoginViewController(loginViewController)和RegisterViewController(registerViewController), 1.在LoginViewController上建立一个TextField(loginTextField)和一个UIBut

安卓企业开发(三) activity的四种经典传值方法

开发中遇到多个activity的传值问题 相邻两个之间的传值 或者多个三个以上之间的传值问题 但是很多同学这方面经验还是不足,说下常用的开发场景 1 一般的注册或者添加某项信息界面就会遇activity传值问题 2  比如我在一个界面提交新息  需要打开一个新的界面选择里面的信息回到当前activty的时候 现在说下比较经典的四种比较经典的传值方法 一 如果是两个相邻activity之间的传值: 可以用Intent传值 对象和单个属性都可以都可以 Intent intent =new Inten

IOS开发之页面间传值的几种小方法

最正经的页面间传值方式莫过于代理传值,今天写的几种小方法不包括代理传值,因为是自学的原因,现在都不知道这几种方法的优缺点,往知道的朋友指正一下: 第一种:属性传值:(这种方法在故事版无效,适合纯代码编写时使用,为什么???) 前提:比如说有两个视图控制器:AViewController和BViewController,他们之间想从A传值到B, ——>在AViewController.m文件中 (1)导入BViewController #import "BViewController.h&q

Intent跳转与传值总结

/*---------------------------------------- *-描述--Intent跳转与传值总结. *-描述--S1.Intent描述 * Intent的分类 * 1.显式意图 通常是指intent启动目标组件时明确指定了组件的名称的情况 * 一般是用在启动同一个应用程序中的组件 * 2.隐式意图 通常是指intent启动目标组件时没有明确指定了组件的名称的情况 * 只是指定了启动组件的特征,一般情况下是用在启动不同应用中的组件 * * 如果目标组件没有指定inten