装备选择

我们在一个主界面点下按钮之后打开另外一个Activity并要求这个Activity返回一个数据,数据返回之后主窗体再对数据进行处理。

以下是其主页面:
这里写图片描述

下面是代码文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.example.a16041.app_zhuangbei.MainActivity">

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="45dp"
        android:layout_gravity="center_horizontal"
        android:src="@mipmap/baby"/>


    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="人物属性"
        android:textSize="18sp" />

    <TableLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <!-->>>>>>>>>>>>>>>>>>>>1<<<<<<<<<<<<<<<<<<<<<<<<-->
    <TableRow
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="25dp"
        >
        <TextView
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="生命值:"
            />

        <ProgressBar
            android:id="@+id/progressBar1"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_weight="3"
            android:layout_width="0dp"
            android:layout_marginLeft="20dp"
            android:layout_height="wrap_content" />

        <TextView
            android:id="@+id/life"
            android:layout_weight="1"
            android:layout_width="0dp"
            android:layout_marginLeft="20dp"
            android:layout_height="wrap_content"
            android:text="0"
            />

    </TableRow>
        <!-->>>>>>>>>>>>>>>>>>>>2<<<<<<<<<<<<<<<<<<<<<<<<-->
        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="25dp"
            >
            <TextView
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="攻击力:"
                />

            <ProgressBar
                android:id="@+id/progressBar2"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_weight="3"
                android:layout_width="0dp"
                android:layout_marginLeft="20dp"
                android:layout_height="wrap_content" />

            <TextView
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_marginLeft="20dp"
                android:layout_height="wrap_content"
                android:text="0"
                android:id="@+id/atk"
                />

        </TableRow>
        <!-->>>>>>>>>>>>>>>>>>>>3<<<<<<<<<<<<<<<<<<<<<<<<-->
        <TableRow
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="25dp"
            >
            <TextView
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:text="敏捷度:"
                />

            <ProgressBar
                android:id="@+id/progressBar3"
                style="?android:attr/progressBarStyleHorizontal"
                android:layout_weight="3"
                android:layout_width="0dp"
                android:layout_marginLeft="20dp"
                android:layout_height="wrap_content" />

            <TextView
                android:layout_weight="1"
                android:layout_width="0dp"
                android:layout_marginLeft="20dp"
                android:layout_height="wrap_content"
                android:text="0"
                android:id="@+id/quick"
                />

        </TableRow>

    </TableLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="15dp"
        android:layout_gravity="center_horizontal"
        >

        <Button


            android:id="@+id/zhu"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:drawableRight="@android:drawable/ic_menu_add"
            android:onClick="onClick1"
            android:text="购买装备" />

    </LinearLayout>
</LinearLayout>



Class:

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.edu.domain.info;

public class MainActivity extends AppCompatActivity  {

    private ProgressBar p1;
    private ProgressBar p2;
    private ProgressBar p3;
    private TextView t1;
    private TextView t2;
    private TextView t3;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找到控件
        p1 = (ProgressBar) findViewById(R.id.progressBar1);
        p2 = (ProgressBar) findViewById(R.id.progressBar2);
        p3 = (ProgressBar) findViewById(R.id.progressBar3);
        t1 = (TextView) findViewById(R.id.life);
        t2 = (TextView) findViewById(R.id.atk);
        t3 = (TextView) findViewById(R.id.quick);
        Button btn1=(Button)findViewById(R.id.zhu);
        btn1.setOnClickListener(new MyListener());
        p1.setMax(1000);
        p2.setMax(1000);
        p3.setMax(1000);
        //p1.setProgress(200);
    }

    class MyListener implements View.OnClickListener {

        public void onClick(View v) {
            Intent intent =new Intent(MainActivity.this,shoppingActivity.class);
            startActivityForResult(intent ,1);//要求打开的窗体返回一个数据

        }
    }
            //购买完毕后执
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (data != null) {
            if (resultCode == 10) {
                if (requestCode == 1) {
                    //info info =(info)data.getExtras().get("info");
                    info info = (info) data.getSerializableExtra("info");
                    //更新
                    updateProgressBar(info);
               }
            }
        }
    }
    private void updateProgressBar(info info) {

        System.out.println("调用了update");
        //获取原进度
        int pro1 = p1.getProgress();
        int pro2 = p2.getProgress();
        int pro3 = p3.getProgress();
        //更新进度
        p1.setProgress(pro1+info.getLife());
        p2.setProgress(pro2+info.getAttack());
        p3.setProgress(pro3+info.getQuick());
        //更新TextView
        t1.setText(p1.getProgress()+"");
        t2.setText(p2.getProgress()+"");
        t3.setText(p3.getProgress()+"");

    }

}


我们创建一个打开shoppingActivityIntent(意图),然后用 startActivityForResult(Intent intent, Int requestCode);开启这个意图并设置一个requestCode(请求码)要求这个Activity带一返回值。

转到ShoppingActivity:

这里写图片描述

点击布局时会触发它的Onclick事件:
`import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.edu.domain.info;

/**
* Created by 16041 on 2017/3/26.
*/

public class shoppingActivity extends Activity {
info info;
protected void onCreate( Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shop);
RelativeLayout layout=(RelativeLayout)findViewById(R.id.rl);
layout.setOnClickListener(new MyListener());
//初始化显示数据
info = new info(“金剑”,20,100,20);
//找控件
TextView tv_name =(TextView) findViewById(R.id.tv_name);
TextView tv_life =(TextView) findViewById(R.id.tv_life);
TextView tv_attack =(TextView) findViewById(R.id.tv_attack);
TextView tv_speed =(TextView) findViewById(R.id.tv_speed);
//数据显示在控件上
tv_name.setText(info.getName());
tv_life.setText(“攻击力:”+info.getAttack());
tv_attack.setText(“敏捷度:”+info.getQuick());
tv_speed.setText(“生命值:”+info.getLife());

}

class MyListener implements View.OnClickListener {
        public void onClick(View v) {
            switch (v.getId()){
                case R.id.rl:
                            //System.out.println("返回了!");
                            Intent intent =new Intent();
                            intent.putExtra("info",info);
                            //把结果返回
                            setResult(10,intent);
                            finish();
                            break;
                default:
                    break;
            }

    }


}

}

触发事件时判断点击的是否是id为rl的布局,如果是就进入选择语句:

 Intent intent =new Intent();
     intent.putExtra("info",info);
     setResult(10,intent);
     finish();
     break;


  创建一个Intent (意图)用intent.putExtra()方法来储存我们想要返回的值; 
  利用setResult(int resultCode, Intent intent);设置一个返回码 和返回的意图。现在要用 finish();关闭当前的Activity然后返回这个Intent 。

回到MainActivity.class
然后用下面的方法来接受并处理返回内容:

protected void onActivityResult(int requestCode, int resultCode, Intent data)
1
1
if (resultCode == 10) { //验证返回码
if (requestCode == 1) { //验证请求码
//执行操作获取存入的数据
info info = (info) data.getSerializableExtra(“info”);
//调用我们写好的类将回传的数据更新到Activity中
updateProgressBar(info);
}
}

下面是其运行效果图:
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值