2017-08-30 65 views
0

在我的android應用程序中,我有一個微調,並且我嘗試檢測何時選擇了一個項目。我知道這可以使用setOnItemSelectedListener()方法來完成,但我不明白的是,這工作得很好:android-Spinner setOnItemClickListener不接受實現OnItemClickListener作爲參數的命名類

((Spinner)findViewById(R.Id.mySpinner)).setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() 
    { 
     // implement onItemClick here 
    }); 

雖然這給出了一個錯誤,該參數爲「不適用」微調:

((Spinner)findViewById(R.Id.mySpinner)).setOnItemSelectedListener(new MyOnItemSelectedListener()); 

哪裏MyOnItemSelectedListener是這樣的,這是在我的MainActivity嵌套類:

private class MyOnItemSelectedListener implements AdapterView.OnItemSelectedListener 
{ 
    public MyOnItemSelectedListener() {} 

    // implement onItemClick here 
} 

我想實現的是不只是運行的代碼 - 我已經有牛逼帽子。它的代碼很容易閱讀(使用我的代碼中的事物的真實名稱以及我的MainActivity類的結構,使用嵌套類比匿名類更具可讀性)。

我如何理解java,除了一個類有一個名字,另一個沒有名字,這兩個本質上應該是相同的。

回答

1

在您的代碼中,您使用IdR.Id.mySpinner)而不是idR.id.mySpinner)。

在你的代碼中的兩個實現肯定會工作。

初始化微調:

Spinner spinner = new Spinner(getActivity()); 
spinner.setOnItemSelectedListener(new MySpinner()); 

內部類:

private class MySpinner implements AdapterView.OnItemSelectedListener{ 

    public MySpinner(){} 

    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 

    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

    } 
} 

這實際上是對我工作的罰款。請諮詢您的idlayout

+0

謝謝,它的工作。我不知道爲什麼當我最後一次嘗試時,它現在沒有。也許我在某個地方有錯誤的類型。 – sisisisi

相關問題