zoukankan      html  css  js  c++  java
  • startActivityForResult()

    可以调用多个startActivityForResult(Intent, int requestCode)打开新的activity来处理业务

    当这些新的activiy关闭后会调用onActivityResult处理返回结果,利用requestCode可以辨别

    是什么业务请求所触发的

    setResult(int resultCode, Intent data)

    onActivityResult(int requestCode, int resultCode, Intent data)

    public class MainActivity extends Activity
    {
    Button bn;
    EditText city;
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    // 获取界面上的组件
    bn = (Button) findViewById(R.id.bn);
    city = (EditText) findViewById(R.id.city);
    // 为按钮绑定事件监听器
    bn.setOnClickListener(new OnClickListener()
    {
    @Override
    public void onClick(View source)
    {
    // 创建需要对应于目标Activity的Intent
    Intent intent = new Intent(MainActivity.this,
    SelectCityActivity.class);
    // 启动指定Activity并等待返回的结果,其中0是请求码,用于标识该请求
    startActivityForResult(intent, 0);
    }
    });
    }
    // 重写该方法,该方法以回调的方式来获取指定Activity返回的结果
    @Override
    public void onActivityResult(int requestCode
    , int resultCode, Intent intent)
    {
    // 当requestCode、resultCode同时为0时,也就是处理特定的结果
    if (requestCode == 0 && resultCode == 0)
    {
    // 取出Intent里的Extras数据
    Bundle data = intent.getExtras();
    // 取出Bundle中的数据
    String resultCity = data.getString("city");
    // 修改city文本框的内容
    city.setText(resultCity);
    }
    }
    }

    public class SelectCityActivity extends ExpandableListActivity
    {
    // 定义省份数组
    private String[] provinces = new String[]
    { "广东", "广西", "湖南"};
    private String[][] cities = new String[][]
    {
    { "广州", "深圳", "珠海", "中山" },
    { "桂林", "柳州", "南宁", "北海" },
    { "长沙", "岳阳" , "衡阳" , "株洲" }
    };
    public void onCreate(Bundle savedInstanceState)
    {
    super.onCreate(savedInstanceState);
    ExpandableListAdapter adapter = new BaseExpandableListAdapter()
    {
    // 获取指定组位置、指定子列表项处的子列表项数据
    @Override
    public Object getChild(int groupPosition, int childPosition)
    {
    return cities[groupPosition][childPosition];
    }
    @Override
    public long getChildId(int groupPosition, int childPosition)
    {
    return childPosition;
    }
    @Override
    public int getChildrenCount(int groupPosition)
    {
    return cities[groupPosition].length;
    }
    private TextView getTextView()
    {
    AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
    ViewGroup.LayoutParams.MATCH_PARENT, 64);
    TextView textView = new TextView(SelectCityActivity.this);
    textView.setLayoutParams(lp);
    textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
    textView.setPadding(36, 0, 0, 0);
    textView.setTextSize(20);
    return textView;
    }
    // 该方法决定每个子选项的外观
    @Override
    public View getChildView(int groupPosition, int childPosition,
    boolean isLastChild, View convertView, ViewGroup parent)
    {
    TextView textView = getTextView();
    textView.setText(getChild(groupPosition, childPosition)
    .toString());
    return textView;
    }
    // 获取指定组位置处的组数据
    @Override
    public Object getGroup(int groupPosition)
    {
    return provinces[groupPosition];
    }
    @Override
    public int getGroupCount()
    {
    return provinces.length;
    }
    @Override
    public long getGroupId(int groupPosition)
    {
    return groupPosition;
    }
    // 该方法决定每个组选项的外观
    @Override
    public View getGroupView(int groupPosition, boolean isExpanded,
    View convertView, ViewGroup parent)
    {
    LinearLayout ll = new LinearLayout(SelectCityActivity.this);
    ll.setOrientation(LinearLayout.HORIZONTAL);
    ImageView logo = new ImageView(SelectCityActivity.this);
    ll.addView(logo);
    TextView textView = getTextView();
    textView.setText(getGroup(groupPosition).toString());
    ll.addView(textView);
    return ll;
    }
    @Override
    public boolean isChildSelectable(int groupPosition,
    int childPosition)
    {
    return true;
    }
    @Override
    public boolean hasStableIds()
    {
    return true;
    }
    };
    // 设置该窗口显示列表
    setListAdapter(adapter);
    getExpandableListView().setOnChildClickListener(
    new OnChildClickListener()
    {
    @Override
    public boolean onChildClick(ExpandableListView parent,
    View source, int groupPosition, int childPosition,
    long id)
    {
    // 获取启动该Activity之前的Activity对应的Intent
    Intent intent = getIntent();
    intent.putExtra("city",
    cities[groupPosition][childPosition]);
    // 设置该SelectCityActivity的结果码,并设置结束之后退回的Activity
    SelectCityActivity.this.setResult(0, intent);
    // 结束SelectCityActivity。
    SelectCityActivity.this.finish();
    return false;
    }
    });
    }
    }

  • 相关阅读:
    【ASP.NET 问题】IIS发布网站后出现 "处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误"的解决办法
    在引用阿里云库或其他库的时候,经常发生框架不兼容(原因是系统采用:Microsoft .NET Framework 4 Client Profile ),请改为Microsoft .NET Framework 4
    jquery之cookie操作
    Kubernetes Pod 镜像拉取策略
    Kubernetes 远程工具连接k8s集群
    Kubernetes 部署Web UI (Dashboard)
    Kubernetes 企业级集群部署方式
    Prometheus 运维监控
    Prometheus 编写告警规则案例
    Prometheus 一条告警的触发流程、等待时间
  • 原文地址:https://www.cnblogs.com/ouyangping/p/7465461.html
Copyright © 2011-2022 走看看