2016-03-08 81 views
1

我的問題是,只要用戶從AutoCompleteTextView中選擇一個項目,我的代碼就不會相應地做出反應。
flag是一個變量,只要選擇了每個AutoCompleteTextView中的一個項目,它就會被設置爲一個值。如果它設置爲1,那麼這意味着它是正確的,它應該繼續進行主要活動。否則,點擊按鈕時會顯示一個烤麪包,其中onClick稱爲方法callMainActivity
沒有錯誤。 Gradle構建成功,但點擊該按鈕(如上所述)則什麼都不做。
代碼:測試用戶是否從AutoCompleteTextView中選擇了一個項目

import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.AutoCompleteTextView; 
import android.widget.ListView; 
import android.widget.Spinner; 
import android.widget.Toast; 

import java.util.Arrays; 
import java.util.List; 

public class Location extends AppCompatActivity { 
    private static int flag=0; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_location); 
    int city = android.R.layout.simple_dropdown_item_1line; 
    int area = android.R.layout.simple_dropdown_item_1line; 
    int store = android.R.layout.simple_dropdown_item_1line; 

    String []city_array = getResources().getStringArray(R.array.City); 
    String []area_array= getResources().getStringArray(R.array.Area); 
    String []store_array= getResources().getStringArray(R.array.Store); 

    List<String> city_list= Arrays.asList(city_array); 
    List<String> area_list= Arrays.asList(area_array); 
    List<String> store_list= Arrays.asList(store_array); 

    ArrayAdapter<String> adapter_city = new ArrayAdapter(this,city, city_list); 
    ArrayAdapter<String> adapter_area = new ArrayAdapter(this, area, area_list); 
    ArrayAdapter<String> adapter_store = new ArrayAdapter(this, store, store_list); 

    final AutoCompleteTextView autocompleteView_city = 
      (AutoCompleteTextView) findViewById(R.id.City); 
    final AutoCompleteTextView autocompleteView_area = 
      (AutoCompleteTextView) findViewById(R.id.Area); 
    final AutoCompleteTextView autocompleteView_store = 
      (AutoCompleteTextView) findViewById(R.id.Store); 

    autocompleteView_area.setAdapter(adapter_area); 
    autocompleteView_city.setAdapter(adapter_city); 
    autocompleteView_store.setAdapter(adapter_store); 
    autocompleteView_area.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(final View arg0) { 
      autocompleteView_area.showDropDown(); 
      if(autocompleteView_area.getListSelection()!= ListView.INVALID_POSITION) 
       flag=1; 
      else 
       flag=0; 

     } 
    }); 
    autocompleteView_city.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(final View arg0) { 
      autocompleteView_city.showDropDown(); 
      if(autocompleteView_area.getListSelection()!= ListView.INVALID_POSITION) 
       flag=1; 
      else 
       flag=0; 
     } 
    }); 
    autocompleteView_store.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(final View arg0) { 
      autocompleteView_store.showDropDown(); 
      if(autocompleteView_area.getListSelection()!= ListView.INVALID_POSITION) 
       flag=1; 
      else 
       flag=0; 
     } 
    }); 

// 這是最近更新的部分

  autocompleteView_area.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick (AdapterView<?> parent, View view, int position, long id) { 
      //... your stuff 
      if(autocompleteView_area.getListSelection()>0) { 
       flag = 1; 
       System.out.println(flag + "flag at area"); 
      }else 
       flag=0; 


     } 
    }); 

} 

public void callMainActivity(View view){ 
    if(flag==1) { 
     Intent in = new Intent(getBaseContext(), MainActivity.class); 
     startActivity(in); 
    } 
    else 
     Toast.makeText(getBaseContext(),"Please select all fields properly",Toast.LENGTH_LONG); 
} 

}

+0

'onClick'觸發時,'autocompleteView_area.getListSelection()> 0'條件始終爲false,因此您的標誌永遠不會設置爲1.更改爲'AdapterView.OnItemClickedListener',就像在我的答案中一樣,您應該可以以這種方式記錄選定的項目/位置。 –

回答

1

你是不是看到Toast或改變活動的原因,是因爲你從來沒有在您的代碼中調用callMainActivity(View view)。將此行添加到所有的OnClickListenerscallMainActivity(arg0)的末尾 - 如果這不起作用,請在您的OnClickListeners中放入一些日誌語句以檢查它們是否正在觸發。

此外,如果您要在從AutoCompleteTextView結果列表中選擇某個項目時觸發呼叫,則應該使用AdapterView.OnItemClickedListener代替。當從AutoCompleteTextView列表中選擇某個項目時,或者沒有選擇任何項目時,您會通知您,然後您可以做出相應的反應。

相關問題