-1

我在“onActivityResult”上收到错误消息,指出“onActivityResult(int, int, Intent) 未定义对象类型”

我看过有同样问题的人,他们说这是由于花括号放置不当造成的。我试图重新定位它们,但不断出现越来越多的错误。

希望有人可以帮助我解决这个问题:

package com.website.test;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.util.Log;
import android.widget.EditText;

public class ListmenuActivity extends Activity {

@Override
protected void onCreate(Bundle saveInstanceState) {
    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    super.onCreate(saveInstanceState);
    setContentView(R.layout.activity_listmenu);

    EditText CPU = (EditText) findViewById(R.id.autoCompleteTextView4);
    CPU.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent CPUList = new Intent(getApplicationContext(),
                    CPUList.class);
            startActivityForResult(CPUList, 1);

        }
    });
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    super.onActivityResult(requestCode, resultCode, data);

    if (resultCode == RESULT_OK) {

        if (requestCode == 1)
            ;

        Intent i = getIntent();
        String product = data.getStringExtra("product");
        EditText CPU = ((EditText) findViewById(R.id.autoCompleteTextView4));
        CPU.setText(product);

    }

    EditText RAMList = (EditText) findViewById(R.id.autoCompleteTextView1);
    RAMList.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            Intent RAMList = new Intent(getApplicationContext(),
                    RAMList.class);
            startActivityForResult(RAMList,1);

        }

        protected void onActivityResult(int requestCode, int resultCode,
                Intent data) {

            super.onActivityResult(requestCode, resultCode, data);

            if (resultCode == RESULT_OK) {

                if (requestCode == 1)
                    ;

                Intent i = getIntent();
                String product = data.getStringExtra("product");
                EditText RAM = ((EditText) findViewById(R.id.autoCompleteTextView4));
                RAM.setText(product);

            }
        }

    });

}

}
4

3 回答 3

1
RAMList.setOnClickListener(new View.OnClickListener() {
    // ...
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // ...
    }
});

这不会像您期望的那样工作。永远不会调用该onActivityResult方法。

onActivityResult是 的一个方法,Activity只要该活动接收到它通过 启动的另一个活动的结果,就会由 Android 运行时调用startActivity(ForResult)。您试图在仅实现View.OnClickListener接口的类上定义它,该接口没有onActivityResult方法。它不会覆盖超类或接口的任何方法,它只是一个没有特殊用途的新方法。

您正在将该类实例传递给setOnClickListener,它只与调用有关onClick- 就像在View.OnClickListener接口中一样。它不知道该onActivityResult对象中有一个方法,它根本不在乎

如果你想让这个工作,你需要将该代码放在onActivityResult你的ListmenuActivity. 由于该类继承ActivityonActivityResult它将为所有由startActivity(ForResult). 您需要区分两次单独的启动,以便知道如何处理给定的结果。这就是为什么 Android 为您提供requestCode: 为您的不同启动提供不同requestCode的 s,当您收到它们的结果时,您将能够将它们分开onActivityResult

因此,您的ListmenuActivity.onActivityResult方法应如下所示:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == 1) {
        // Handle result of CPUList
    } else if (requestCode == 2) {
        // Handle result of RAMList
    }
    super.onActivityResult(requestCode, resultCode, data);
}

您将使用startActivityForResult(CPUList, 1)和启动您的子活动startActivityForResult(RAMList, 2)

(旁注:如果您在同一范围内命名两个不同的变量RAMList- anEditText和 an - 会非常混乱。)Intent

于 2013-08-12T10:10:37.937 回答
0

我认为您不需要致电:

super.onActivityResult(requestCode, resultCode, data);

而这段代码什么也不做:

if (requestCode == 1)
    ;

你可以删除它。

于 2013-08-12T10:04:20.290 回答
0

已经onActivityResult()声明不需要定义它两次。

另一件事是你提到第二个onActivityResult()onClickListener()错误的。

代码中的错误点

  1. onClickListener() 里面不能有 onActivityResult()。
  2. 你不需要像你已经在做findViewById()的那样做onActivityResult()onCreate().

缺少括号的问题

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
   super.onActivityResult(requestCode, resultCode, data);
   // your code
    if (requestCode == 1) {
        Intent i = getIntent();
        String product = data.getStringExtra("product");
        CPU.setText(product);
    }
}

你只需要用这些替换这个 onActivityResult() 。

于 2013-08-12T10:09:57.007 回答