Java 不兼容的操作数类型r.integer和int
我试图比较整型列表和微调器中的位置。整数列表包含来自数据库的ID列表,微调器包含与ID相关的名称列表。ID和名称存储在数据库中,比较列表中的ID和微调器中的位置后,将两个编辑文本框设置为与特定ID(而非名称)对应的值。 ID设置为自动递增。 以下是主要活动:Java 不兼容的操作数类型r.integer和int,java,android,int,Java,Android,Int,我试图比较整型列表和微调器中的位置。整数列表包含来自数据库的ID列表,微调器包含与ID相关的名称列表。ID和名称存储在数据库中,比较列表中的ID和微调器中的位置后,将两个编辑文本框设置为与特定ID(而非名称)对应的值。 ID设置为自动递增。 以下是主要活动: public class LoginActivity extends AppCompatActivity { Button b; EditText ed1, ed2, ed3; Spinner sp; String url = "http
public class LoginActivity extends AppCompatActivity {
Button b;
EditText ed1, ed2, ed3;
Spinner sp;
String url = "https://web.facebook.com/";
String urltest = "http://www.google.com/";
WebView wb;
database db;
String details[];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
b = (Button) findViewById(R.id.button1);
ed1 = (EditText) findViewById(R.id.editText1);
ed2 = (EditText) findViewById(R.id.editText2);
ed3 = (EditText) findViewById(R.id.editText3);
wb = (WebView) findViewById(R.id.webView1);
sp = (Spinner) findViewById(R.id.spinner1);
db = new database(LoginActivity.this);
// wb.loadUrl(url);
List<String> l = db.userlist();
final List<Integer> idlist = db.IDList();
ArrayAdapter<String> sa = new ArrayAdapter<String>(LoginActivity.this, android.R.layout.simple_spinner_item, l);
sp.setAdapter(sa);
b.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
user u = new user();
String name = ed1.getText().toString();
String uname = ed2.getText().toString();
String pass = ed3.getText().toString();
if (name.length() > 0 && uname.length() > 0 && pass.length() > 0) {
u.setName(name);
u.setUname(uname);
u.setPass(pass);
db.insert(u);
ed1.setText("");
ed2.setText("");
ed3.setText("");
} else {
Toast.makeText(LoginActivity.this, "Please enter the Name, User Name and password",
Toast.LENGTH_SHORT).show();
}
Toast.makeText(LoginActivity.this, "The user name details has been saved.", Toast.LENGTH_LONG).show();
}
});
sp.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
// TODO Auto-generated method stub
if (idlist.get(position) == position) {
details = db.details(position);
ed2.setText(details[0]);
ed3.setText(details[1]);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
}
我在MainActivity.java
文件中得到一个错误,因为操作数类型r.integer和int
不兼容。这是在if(idlist.get(position)=position)行上的if----它位于item selected listener上设置的微调器中,现在通过将integer更改为integer来解决。但这句话在某种程度上是无效的。它无法比较整数和整数。有什么建议可以纠正它吗?您必须使用:
List<Integer> list = new ArrayList<Integer>();
List List=new ArrayList();
integer
和integer
之间存在差异
试着使用这个,我希望它能帮助你。'integer'确实是作为一个整体存在的
. 因此,您的列表被解释为数据类型R.integer的列表,但“R.integer”和基元数据类型“int”不兼容
由于类“Integer”的目的是在需要时将整数转换为对象,因此它也不兼容
编辑:
因此,您要做的第一件事是将代码中的每个“整数”更改为“整数”,因为您要处理的是数字,而不是android资源
查看崩溃发生的方法,很难判断代码工作需要做什么(不仅仅是“不崩溃”)
“onItemSelected()”方法中的“position”值将为您提供与所选ListView行相对应的列表“l”的索引
现在,您似乎要检查一个用户名的列表索引是否等于SQLite数据库中的userid。因为我不知道你们的数据模型,我不知道这样做是否有意义。我只知道你在数据库中通过单独的查询填写了'idlist'和'l',并且没有包含'orderby',因此可能名称和ID的排序方式甚至不一样
但这是另一个问题……:) 你的代码正在编译吗?正常情况下,Integer
以大写的i
开头,或者它不是java.util.Integer
?@Jens-我想它编译得很好,android有一个描述int资源的“Integer”类。但这只是猜测,这是由于操作数类型不兼容而导致的错误,但将整数转换为整数成功了。谢谢。通过将所有integer转换为integer成功了,但为什么integer有这么多不同的类型,如int、integer和integer?integer是一个包装类,基本上用于解析,int是代码中常用的数据类型。我不知道您打算如何处理
,但是你可以检查一下你是否真的需要它。@Tom:我应该把这句话加在哪里?本例中的列表是从database.java文件中的函数获取值。我必须编辑函数本身吗?语法应该是什么?0X0nosugar正确表示整数和int无法比较。代码正在编译,但在启动之前就崩溃了。如果您有新信息,请编辑您的问题。但请附加/添加这些信息,不要删除当前问题中的内容。是的,它也不起作用。你能建议正确的方法吗?@ArpitKumar-好的,我会设法弄清楚的。
public class user {
String id, name, uname, pass;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}
List<Integer> list = new ArrayList<Integer>();