Страница 1 из 1

Размещение элемента Spinner

Добавлено: 22 июл 2015, 00:20
tomattman
Привет, у меня вопрос. Необходимо разместить Spinner. При размещении как на втором скрине при запуске приложения выдает RuntimeException android.widget.Button cannot be cast to android.widgetSpinner
При переносе Spinner без изменения свойств как на первом скрине, все работает замечательно.
Исходя из логов, ошибка происходит на строке
Spinner spinner = (Spinner) findViewById(R.id.catSpinner);

Подскажите пожалуйста как исправить данную ошибку, чтобы разметка была как на втором скрине.

Код: Выделить всё

public class InputActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_input);
		Log.d("my Log", "создание адаптера");
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, getResources().getStringArray(R.array.category));
		adapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
		Log.d("my Log", "создание spinner");
		Spinner spinner = (Spinner) findViewById(R.id.catSpinner);
		Log.d("my Log", "установка адаптера cпинеру");
		spinner.setAdapter(adapter);	
		
		spinner.setOnItemSelectedListener(spinnerClick);
		
		
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.input, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		// Handle action bar item clicks here. The action bar will
		// automatically handle clicks on the Home/Up button, so long
		// as you specify a parent activity in AndroidManifest.xml.
		int id = item.getItemId();
		if (id == R.id.action_settings) {
			return true;
		}
		return super.onOptionsItemSelected(item);
	}
	
	public OnItemSelectedListener spinnerClick = new OnItemSelectedListener() {

		@Override
		public void onItemSelected(AdapterView<?> parent, View view,
				int position, long id) {
			// TODO Auto-generated method stub
			Toast.makeText(getBaseContext(), "pos = " + position, Toast.LENGTH_LONG).show();
		}

		@Override
		public void onNothingSelected(AdapterView<?> parent) {
			// TODO Auto-generated method stub
			
		}
	};	
}

Код: Выделить всё

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/mainLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.google.mail.tomattman.cashcontrol.InputActivity" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="vertical" >

            <EditText
                android:id="@+id/titleInput"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:ems="10"
                android:hint="@string/titleInputHint" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1" >

                <EditText
                    android:id="@+id/costInput"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="5"
                    android:ems="10"
                    android:hint="@string/costTextView"
                    android:inputType="numberDecimal" >

                    <requestFocus />
                </EditText>

                <EditText
                    android:id="@+id/countInput"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="7"
                    android:ems="10"
                    android:hint="@string/countTextView"
                    android:inputType="numberDecimal" />

                <Spinner
                    android:id="@+id/catSpinner"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_weight="7" />

            </LinearLayout>

        </LinearLayout>

        <Button
            android:id="@+id/addButton"
            style="?android:attr/buttonStyleSmall"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_weight="0"
            android:text="@string/add" />

    </LinearLayout>

    <TextView
        android:id="@+id/sumTextView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:text="Medium Text"
        android:textAppearance="?android:attr/textAppearanceMedium" />

</LinearLayout>

Re: Размещение элемента Spinner

Добавлено: 22 июл 2015, 00:27
Foenix
скопипасти все-таки код сюда полностью, не так у тебя в коде 100%

Re: Размещение элемента Spinner

Добавлено: 22 июл 2015, 00:34
tomattman
Добавил код

Re: Размещение элемента Spinner

Добавлено: 22 июл 2015, 01:05
Foenix
икод activity_input

Re: Размещение элемента Spinner

Добавлено: 22 июл 2015, 07:45
klblk
Попробуй Project->Clean...
У меня бывает некорректно генерится R файл при перетасовке элементов в xml в Eclipse.

Re: Размещение элемента Spinner

Добавлено: 22 июл 2015, 22:06
tomattman
всем спасибо, решил проблему удалением старой кнопки и созданием в том же месте новой, видимо был какой-то баг