如何重用我的startActivityforResult()方法?

时间:2012-01-04 17:53:23

标签: android android-activity startactivityforresult

目前,当我点击我的按钮时,它使用方法startActivityForResult();它找到答案并返回。

唯一的问题是一旦它返回它将再次启动活动。就个人而言,我认为拥有一个只能运行一次的方法完全没有意义。当然必须有一个可以赋予方法的标志,以告诉它运行多次?

我已经阅读了javadoc并且它似乎没有帮助,因为它说它一次性使用,除非我读错了?

在我的搜索活动中:

private OnItemClickListener listListener = new OnItemClickListener() {

    @Override
    public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
        // TODO Auto-generated method stub
        String text = (String) ((TextView) arg1).getText();
        String[] selected = text.split(" - ");
        selected[0] = selected[0].replace(' ', '_');
        Log.w("COMPANY", selected[0]);
        Log.w("PART", selected[1]);

        Intent data = new Intent();
        data.putExtra("key", selected);
        setResult(RESULT_OK, data);

        finish();

        // startActivity(switch2);
    }

};

在我的主要活动中 (IN按钮听众)

if (search.isPressed() && searchPressed == false) {
            // show search list
            Intent switch1 = new Intent(MainActivity.this, SearchActivity.class);

            startActivityForResult(switch1, 0);

        }

@Override
protected void onActivityResult(int req, int resp, Intent data) {
    super.onActivityResult(req, resp, data);

    searchPressed = true;
    Bundle searched = data.getExtras();
    String[] newItem = searched.getStringArray("key");

    if (newItem[0].endsWith("_")) {
        handleXML(1);
        tv1.setText("Higher");
        tv2.setText("Lower");
    } else {
        handleXML(0);
        tv1.setText("Wear Resistance");
        tv2.setText("Tougher");
    }
    competitors = h.competitors;
    String[] piece = competitors.findCompanyParts(newItem);
    assignMaterials(piece);

    window.setVisibility(VISIBLE);
    grade.setVisibility(INVISIBLE);
    geo.setVisibility(INVISIBLE);
    s1.setVisibility(INVISIBLE);
    s2.setVisibility(INVISIBLE);
    search.setVisibility(INVISIBLE);
    help.setVisibility(INVISIBLE);
    myTabHost.setCurrentTab(0);
}

2 个答案:

答案 0 :(得分:0)

你需要了解它的一个回调方法,用于在活动之间得到结果。
因此,没有必要设置它应被调用的次数。
但是如果你想重复使用它所包含的数据,那么首次保存你在其中获得的意图/数据并做任何你想做的事。

答案 1 :(得分:0)

你肯定做错了什么。 该方法只是启动另一个活动。 startActivity()和startActivityForResult()之间没有真正的区别,除了第二个可以选择附加到一个回调,该回调将从已启动的Activity一旦完成后侦听一些返回值。 你应该粘贴一些代码来告诉我们你在做什么,我相信我们会很快指出你出错的地方。