Как я могу повторно использовать мой метод startActivityforResult ()? - PullRequest
0 голосов
/ 04 января 2012

В настоящее время, когда я нажимаю кнопку, используется метод 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);
    }

};

В МОЕЙ ОСНОВНОЙ ДЕЯТЕЛЬНОСТИ (В СЛУЖЕБНОМ ФУНКЦИИ)

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 голосов
/ 04 января 2012

Вы определенно делаете что-то не так.Метод просто запускает другое действие.Нет реальной разницы между startActivity () и startActivityForResult (), за исключением того, что у второго есть опция присоединения к обратному вызову, который будет прослушивать некоторые возвращаемые значения из запущенного Activity после его завершения.Вы должны вставить какой-нибудь код, чтобы показать нам, что вы делаете, и я уверен, мы быстро укажем, где вы ошиблись.

0 голосов
/ 04 января 2012

Вы должны понимать, что это метод обратного вызова, используемый для получения результата между действиями.
Таким образом, нет никакого смысла в том, чтобы вы могли установить, сколько раз он должен вызываться.
Но если вы хотите повторно использовать полученные в нем данные, сохраните это намерение / данные, которые вы получите в нем в первый раз, и сделайте все, что пожелаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...