2014-04-05 2 views
0

enter image description hereНе коммутационные деятельность после предсказания автозаполнения

Когда я вхожу «Joh», я получаю «Джон Ф. Кеннеди». Теперь, когда я нажимаю «Джон Ф. Кеннеди», это не приводит меня к другой деятельности, которая дает информацию о Джоне Ф. Кеннеди. Но я запрограммировал это для этого. Что не так с моим кодом?

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

Содержит ли этот код? Я вижу, что вы используете 'this' как« ItemSelectedListener »и« ItemClickListener », но вы не реализовали эти интерфейсы в своей« Деятельности ». – tambykojak

+0

Да. Он компилируется. – CodeWalker

ответ

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"); 
+0

Приложение рушится – CodeWalker

Смежные вопросы