当我进入" Joh"时,我得到了约翰肯尼迪"。现在,当我点击" John F. Kennedy"时,它并没有带我去另一个提供John F. Kennedy信息的活动。但我已经编程了这样做。我的代码出了什么问题?
package com.mavenmaverick.autocomplete_test;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Toast;
import android.view.inputmethod.InputMethodManager;
public class MainActivity extends Activity {
String[] presidents= {
"John F. Kennedy",
"Lyndon B. Johnson",
"Richard Nixon",
"Gerald Ford",
"Jimmy Carter",
"Ronald Reagan",
"George H. W. Bush",
"Bill Clinton",
"George W. Bush",
"Barack Obama"
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.select_dialog_item, presidents);
textView.setThreshold(3);
textView.setAdapter(adapter);
textView.setOnItemSelectedListener((OnItemSelectedListener) this);
textView.setOnItemClickListener((OnItemClickListener) this);
textView.setOnItemSelectedListener(new OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int index, long id)
{
int position=0;
if(position == 1){
Intent i = new Intent (MainActivity.this, SecondActivity.class);
startActivity(i);
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
}
}
答案 0 :(得分:0)
主要问题如下:
@Override
public void onItemSelected(AdapterView<?> parent, View view, int index, long id)
{
int position=0;
// once the logic reaches this part, the value
// of "position" will always be 0 because that
// is what you are setting it too. Therefore,
// the following if statement is skipped.
if(position == 1) {
Intent i = new Intent (MainActivity.this, SecondActivity.class);
startActivity(i);
}
}
您想要改变它:
@Override
public void onItemSelected(AdapterView<?> parent, View view, int index, long id)
{
if(position == 1) {
Intent i = new Intent (MainActivity.this, SecondActivity.class);
i.putExtra("KEY", presidents[index]);
startActivity(i);
}
}
putExtra
方法用于在MainActivity
和SecondActivity
之间传递信息。它所采用的第一个参数是String
用作键,第二个参数是实际值。
"KEY"
可以是任何值,只需记住您将在SecondActivity
中使用相同的键来获取值。例如:
String presidentClickedOn = getIntent().getStringExtra("KEY");