我在“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);
}
}
});
}
}
答案 0 :(得分:1)
RAMList.setOnClickListener(new View.OnClickListener() {
// ...
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// ...
}
});
这不会像你期望的那样起作用。 <{1}}方法永远不会被调用。
onActivityResult
是onActivityResult
的一种方法,只要该活动收到通过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)
- RAMList
和EditText
,则会非常混乱。)
答案 1 :(得分:0)
我认为你不需要打电话:
super.onActivityResult(requestCode, resultCode, data);
并且此代码不执行任何操作:
if (requestCode == 1)
;
您可以将其删除。
答案 2 :(得分:0)
已经onActivityResult()
已经宣布无需定义两次。
另一件事是你在onActivityResult()
中提到第二onClickListener()
这是错误的。
代码中的错误点
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);
}
}
醇>
缺少咸水的问题
{{1}}
你只需要用这些替换这个onActivityResult()。