• 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;
    }
    });
    }
    }

  • 相关阅读:
    URAL 2067 Friends and Berries (推理,数学)
    URAL 2070 Interesting Numbers (找规律)
    URAL 2073 Log Files (模拟)
    URAL 2069 Hard Rock (最短路)
    URAL 2068 Game of Nuts (博弈)
    URAL 2066 Simple Expression (水题,暴力)
    URAL 2065 Different Sums (找规律)
    UVa 1640 The Counting Problem (数学,区间计数)
    UVa 1630 Folding (区间DP)
    UVa 1629 Cake slicing (记忆化搜索)
  • 原文地址:https://www.cnblogs.com/ouyangping/p/7465461.html
Copyright © 2020-2023  润新知