2012-01-26 33 views
0

autoCompleteをどのように初期化しますか? AutoCompleteTextViewでそれを使用することはできません。なぜなら、ローカル変数が複製されていることを伝えるからです。それも静的だと宣言してみたが、許されなかった。ローカル変数が初期化されていない可能性があります

助けてください!

public class Search extends Activity { 
    public void onCreate(Bundle savedInstanceSate) { 
     final int autoComplete; 
     super.onCreate(savedInstanceSate); 
     setContentView(R.layout.searchshop); 

     //The duplicate im talking about 
     AutoCompleteTextView autoCompletee = (AutoCompleteTextView) findViewById(R.id.autoCompleteTextView1); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item, shops); 
     autoCompletee.setAdapter(adapter); 
     autoCompletee.setThreshold(1); 
     autoCompletee.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) { 
       Intent intent; 
       int index=999; 
       for(int i=0;i<shops.length;i++) { 
         //The local variable autoComplete may not been initialized 
        if(shops[i].equals(Integer.toString(autoComplete))) { 
         index=i; 
         break; 
        } 
       } 
       switch(index) { 
        case 0: 
         intent=new Intent(Search.this, Adidas.class); 
         startActivity(intent); 
         break; 
        case 1: 
         intent=new Intent(Search.this, Affin.class); 
         startActivity(intent); 
         break; 
       } 
      } 
     }); 
    } 

    static final String[] shops = new String[] { 
       "Adidas", "Affin Bank", "Alam Art", "Al Amin" 
    }; 
} 
+0

これは意味をなさないものです。 autoCompleteという名前のint変数があり、これには決して値が割り当てられません。もちろん初期化されていません。あなたの質問は何ですか? –

+0

答えは、あなたの 'autoComplete 'にどのような価値を持たせるかによって大きく左右されます。 – dasblinkenlight

+0

質問はそんなに方法ではなく、理由です。私が見る限り、変数は常に 'false'を返す' equals'呼び出し以外では使用されません。 – biziclop

答えて

-1

あなたは、いくつかのデフォルト値に設定する必要があり、ローカル変数としてオートコンプリートのフィールドを、持っています。

はちょうど

+0

と彼は常に0に等しい変数を持つつもりですか?何のために? –

+0

何をお探しですか? OPは知っている。問題の問題は、ローカル変数が初期化されていないことです。これは答えによって解決されます。答えは質問です。意味が分からない。コードでは、オートコンプリートに値を割り当てるケースはありません。 – kosa

+0

OPは混乱しており、あなたは彼を混乱させるのを手伝っていません。 –

0

staticfinal、などであることをint autoCompleteを変更....最初の二つの文はスーパーである必要があり、コード内の3番目のステートメントとして、このfinal int autoComplete=0;

移動を設定するとのsetContent(...)コンパイラが既に "autoComplete"という変数を持っているという不満があるため、1ビットは問題になりません。実際のコード例では、AutoCompleteTextViewという名前の2つのeがautoCompleteと異なるように「autoCompletee」という名前を付けました。しかし、より意味のある変数名、例えばint autoCompleteValueなどを使用することをお勧めします。いずれにせよ、問題は変数が衝突してしまうことです。特定の名前のスコープ内の変数を取得したら、その名前を再び使用することはできません。