2

(これがここで許可されているかどうかはわかりません、私は新しいです)

ここでスタックオーバーフローに関する古い質問を見つけましたが、その質問には正しい答えが得られず、同じ問題に直面しています。ですから、もし誰かがそれを見てくれたら、本当に感謝します。どうもありがとうございました!

onItemSelected が呼び出されても、スピナーはクリックに反応しませんか?

アップデート:

私自身のコードで、開始時に onItemSelected() メソッドが実行されないようにしたかったので、その質問をしている人と同じことをしました。コードを少し動かしてみて、何かが変わるかどうかを確認しましたが、うまくいきませんでした..正直なところ、何が悪いのかわかりません。何をすべきか..

ここに私のコードがあります:

public class WidgetConfig extends Activity implements OnItemSelectedListener{

static EditText info;
private static final String[] paths = { "10", "12", "14", "16", "18", "20",
    "22", "24", "26", "28", "30", "32", "34", "36", "38", "40", "50", "60"};

private static final String TAG = "MyActivity";

int mAppWidgetId = AppWidgetManager.INVALID_APPWIDGET_ID;   

 private ArrayList<String> mMyTypes = null;
 private ArrayAdapter<String> mMyAdapter = null;
 private Spinner mMyTypeSpinner = null;
 // hack for spinner
 boolean isFirstRunWithSpinner = true;


public WidgetConfig() {
    super();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    Log.v(TAG, "onCreate() started");

    setContentView(R.layout.widgetconfig);

    context = WidgetConfig.this;

    // back button = cancel
    setResult(RESULT_CANCELED);

    //--------------------------------------------------



    mMyTypeSpinner = (Spinner) findViewById(R.id.TxtSizeSP);

    mMyTypes = new ArrayList<String>();
    mMyTypes.add("Test string");

    mMyAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, paths);
    mMyAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    mMyTypeSpinner.setAdapter(mMyAdapter);


    // spinner listener
    mMyTypeSpinner.setOnItemSelectedListener(this);




} // onCreate finished

public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
    Log.v(TAG, "OnItemselected started");

    if( isFirstRunWithSpinner ) { isFirstRunWithSpinner = false; return; }

    RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);

    AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);

    switch (position) {
    case 0:
        info.setTextSize(10.0f);
        views.setFloat(R.id.tvConfigInput, "setTextSize", 10);
        Log.v(TAG, "position 0 chosed");
        break;

       ...

       break;  
    case 17:
        info.setTextSize(28.0f);
        views.setFloat(R.id.tvConfigInput, "setTextSize", 60);
       break;  
    }

    //update widget with spinner input
    Log.v(TAG, "update size start");
    appWidgetManager.updateAppWidget(mAppWidgetId, views);
    Log.v(TAG, "update size over");



    }


public void onNothingSelected(AdapterView<?> arg0) {

}

    ...

}

}

4

1 に答える 1

0

これを試しましたか?:

if( isFirstRunWithSpinner ) { 
isFirstRunWithSpinner = false;
}else{
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);

AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);

switch (position) {
case 0:
    info.setTextSize(10.0f);
    views.setFloat(R.id.tvConfigInput, "setTextSize", 10);
    Log.v(TAG, "position 0 chosed");
    break;

   ...

   break;  
case 17:
    info.setTextSize(28.0f);
    views.setFloat(R.id.tvConfigInput, "setTextSize", 60);
   break;  
}

//update widget with spinner input
Log.v(TAG, "update size start");
appWidgetManager.updateAppWidget(mAppWidgetId, views);
Log.v(TAG, "update size over");
}
于 2012-11-19T17:02:54.833 に答える