2012-03-07 24 views
2

OnItemSelectedListenersでスピナーを使用してアンドロイド2.2(api8)でアプリを正常に実行しています。それはtarketSdkVersion = 8とminSdkVersion = 8で構築されました。私は今、3.2デバイスで実行しようとしていますが、スピナーは選択できません。ただし、デフォルトの配列値が入力されるため、アダプタが動作しているように見えます。スピナーをクリックすると反応が生じません。私はtarketSdkVersion = 13とminSdkVersion = 13で構築しようとしましたが、スピナーはまだ死んでいます。私は、multiline_spinner_dropdown_item.xmlファイルで "wrap_content"を達成するために、わずかにカスタマイズされたスピナーバージョンを使用しています。 2.2以降、スピナーとの互換性の問題はありますか?2.3ではSpinnerが動作しますが、3.2ではありません

+0

間違いは有りますか?そうであればstacktrace – kosa

+0

を投稿してください。実際には、アプリコントロールの残りの部分は動作しますが、スピナーはクリックに反応しません。デバッグでは、OnItemSelectedListenersは決して起動しません。 –

+0

コードを投稿してもらえますか?だから私はそれを試すことができます.... – Scorpion

答えて

2

.setEnabled(true)を試しましたが、動作しませんでした。フラストレーションの中で、私はmain.javaとlayout.xmlから単一のスピナーが残って動作するまでコードのセクションを削除し始めました。コードとコントロールを追加して、TabHost/LinearLayout/TabWidget/FrameLayoutの内部にあるScrollViewがSpinnersの応答を妨げていることがわかりました。 Scrollviewを削除することで、Spinnersは3.2で作業しました。なんらかの理由で、Scrollviewは2.2で動作しましたが、3.2では動作しませんでした。

0

スピナーを有効に設定しましたか?

spinner.setEnabled(true); 

デフォルトでは無効になっていましたが、あなたの症状は、スピナーが無効になっていると説明しています。

1

スピナーの視界を変えることはありますか?

私も同様の問題がありました。スピナーが再表示されるたびにsetAdapter()に電話する必要がありました。そうしないと、クリックの影響を受けなくなりました。

https://github.com/nikclayton/android-squeezer/commit/7a148edf5f1b3eaca7718161de18254970290ce0でこの問題を修正した私のプロジェクトに行った変更を見ることができます。

1

おそらくいくつかの視認性の問題? スピナーのアイテムが表示されている領域の上にScrollViewを積み重ねていますか? たとえば、アイコンや色を変更してスピンの状態を変え、クリックイベントが発生するかどうかを確認します。もしそうであれば、それは恐らく可視性に関連するものでしょう。もしそうでなければ、それは別のことかもしれません。 いくつかのコードサンプルが役に立ちます:)

+0

奇妙なことに、私は2.2で素晴らしい作品私の別のアプリを試してみました。私はそれを3.1タブレットまたはエミュレータにインストールすると、onClickイベントは発生しません。今回はスピナーはありませんが、リスナーはどちらも動作しません! –

0

奇妙なことに、私は2.2で素晴らしい作品です。私はそれを3.1タブレットまたはエミュレータにインストールすると、onClickイベントは発生しません。今回はスピナーはありませんが、リスナーはどちらも動作しません!ここでは、コードの一部です:

//In onCreate: 

//setup listeners 
rbSlab = (RadioButton)findViewById(R.id.rbSlab); 
rbBeam = (RadioButton)findViewById(R.id.rbBeam); 
rbSlab.setOnClickListener(radio_listener); 
rbBeam.setOnClickListener(radio_listener); 
etFpc.setOnEditorActionListener(this); 
etFy.setOnEditorActionListener(this); 
etBw.setOnEditorActionListener(this); 
etDp.setOnEditorActionListener(this); 
etMu.setOnEditorActionListener(this); 
... 
}//end onCreate 

//In Main body of app: 
//for radio buttons 
private OnClickListener radio_listener = new View.OnClickListener() 
{ //@Override 
    public void onClick(View v) { 
     DoCalcs(); 
    }//onClick 
}; 

//for edittext 
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) 
    { if ((actionId == EditorInfo.IME_ACTION_DONE) || //if DONE button pushed 
      ((event.getAction()==KeyEvent.ACTION_DOWN) &&   (event.getKeyCode() == KeyEvent.KEYCODE_ENTER))) //if ENTER button pushed 
    { 
     //do calcs 

     return(true); 
      } 
     else return(false); 
    } 

は私がターゲットAPI 8と分のAPI 8とし、またターゲットAPI 14、分8でこれを構築した、とAPI 8にインストールしたときにリスナーが正常に動作しますが、 API 14ではなく!

2

私は同じ問題を抱えていましたが、私は2.2でスピナーを使用しましたが、それは動作していましたが、3.2でも動作しませんでした。そのため、スピナーが正しく表示されないため、 値/スタイルでテーマを作成し、android.manifestファイルのアクティビティに適用するだけです。

0

私にも同様の問題がありました。 Android 3.2以降のデフォルトテーマが原因です。

簡単な解決策は、カスタムスピナーを使用する、またはそのための任意の背景色や絵を作ること、のようなものです:

android:background="@drawable/spinner" 

このlinkは、カスタムスピナーのためのお手伝いをします。

関連する問題