启动Activity的方法


在启动另外一个Activity的时候,有两种方法,一种是直接使用startActivity,另外一种就是使用startActivityForResult。前一种想必大家都明白怎么使用了,我就不废话了。本文主要通过一个Demo来学习一下第二种

startActivityForResult的主要作用就是它可以回传数据,假设我们有两个页面,首先进入第一个页面,里面有一个按钮,用于进入下一个页面,当进入下一个页面时,进行设置操作,并在其finish()动作或者back动作后,将设置的值回传给第一个页面,从而第一个页面来显示所得到的值。这个有一点像回调方法,就是在第二个页面finish()动作或者back动作后,会回调第一个页面的onActivityResult()方法,所以我们可以重写一下这个方法。直接看代码吧:

MainActivity.java

package com.yunzhu.teststartactivityforresult;

import android.content.Intent;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends ActionBarActivity implements View.OnClickListener{
    private static int REQUSETET_CODE1=0;
    private static int REQUSETET_CODE2=2;
    private TextView t1,t2;
    private Button b1,b2;
    Intent intent;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initview();
        intent=new Intent();
        intent.setClass(MainActivity.this,result.class);
    }
   public void initview(){
       t1=(TextView)this.findViewById(R.id.textview1);
       t2=(TextView)this.findViewById(R.id.textview2);
       b1=(Button)this.findViewById(R.id.b1);
       b2=(Button)this.findViewById(R.id.b2);
       b1.setOnClickListener(this);
       b2.setOnClickListener(this);
   }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.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();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.b1:
               startActivityForResult(intent,REQUSETET_CODE1);
                break;
            case R.id.b2:
                startActivityForResult(intent,REQUSETET_CODE2);
                break;
            default:
                break;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        String one=data.getStringExtra("one");
        String two=data.getStringExtra("two");

       if(resultCode==23){
           switch (requestCode){
               case 0:
                   t1.setText(one);
                   break;
               case 2:
                   t2.setText(two);
                   default:
                       break;
           }
       }
    }
}
result.java

package com.yunzhu.teststartactivityforresult;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;

/**
 * Created by yu on 2015/8/13.
 */
public class result extends ActionBarActivity{
    private static int resultCode=23;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);
        Intent intent=new Intent();
        intent.putExtra("one","1000");
        intent.putExtra("two", "20000");

        setResult(resultCode, intent);
        finish();

    }
}

界面布局很简单,这里就不给出啦。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值