对于Object类型,未定义onActivityResult(int,int,Intent)

时间:2013-08-12 10:00:33

标签: android onactivityresult

我在“onActivityResult”上收到错误,声明“onActivityResult(int,int,Intent)未定义为Object类型”

我看过那些遇到同样问题的人,他们说这是由于放置不当的咖喱支架造成的。我试图重新定位它们,但不断出现越来越多的错误。

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

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

            }
        }

    });

}

}

3 个答案:

答案 0 :(得分:1)

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

这不会像你期望的那样起作用。 <{1}}方法永远不会被调用。

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

您正在将该类实例传递给onActivityResult,这只涉及调用setOnClickListener - 因为它位于onClick接口中。它不知道该对象中有View.OnClickListener方法,只是不关心

如果您希望将此功能付诸实践,则需要将该代码放入onActivityResult的{​​{1}}。由于该类继承了onActivityResult,因此ListmenuActivity将为Activity启动的所有活动调用onActivityResult。您需要区分两次单独的启动,以便知道如何处理给定的结果。这就是Android为您提供startActivity(ForResult)的原因:为您的不同发布提供不同的requestCode,并且当您在requestCode收到结果时,您就可以将它们分开。

因此,您的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) - RAMListEditText,则会非常混乱。)

答案 1 :(得分:0)

我认为你不需要打电话:

super.onActivityResult(requestCode, resultCode, data);

并且此代码不执行任何操作:

if (requestCode == 1)
    ;

您可以将其删除。

答案 2 :(得分:0)

已经onActivityResult()已经宣布无需定义两次。

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

代码中的错误点

  1. onClickListener()中不能包含onActivityResult()。
  2. 您不需要findViewById() onActivityResult(),因为您已在onCreate().
  3. 处完成了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); } }

    缺少咸水的问题

    {{1}}

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