旋转器无法使用和错误显示

时间:2014-01-12 14:45:24

标签: android layout spinner

当我第一次启动我的应用程序时,所有内容都显示并正常工作但当我关闭并重新打开它时,在我的相对布局顶部彼此相邻的微调器和按钮只是它们通常高度的一半,而微调器是无法使用。如果我点击它没有任何下降(但按钮按常规工作)。微调器下方的其他元素,但照常显示。

我花了半天时间用谷歌搜索并使用应用程序代码和布局XML,几乎没有任何进展。

任何人都知道造成这种情况的原因是什么?它只发生在应用程序的后续运行中。

这是布局XML:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
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=".MainActivity" >

<Spinner
    android:id="@+id/namespinner"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_toLeftOf="@+id/button1" />

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/namespinner"
    android:layout_alignParentRight="true"
    android:layout_alignTop="@+id/namespinner"
    android:onClick="onEditButtonPressed"
    android:text="@string/dob_edit" />

<TextView
    android:id="@+id/secondsDisplay"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_alignParentBottom="true"
    android:layout_marginBottom="36dp"
    android:text="@string/seconds"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textSize="48sp" />

<TextView
    android:id="@+id/minutesDisplay"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/secondsDisplay"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="28dp"
    android:text="@string/minutes"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textSize="48sp" />

<TextView
    android:id="@+id/hoursDisplay"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_above="@+id/minutesDisplay"
    android:layout_marginBottom="27dp"
    android:text="@string/hours"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textSize="48sp" />

<TextView
    android:id="@+id/hourstext"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/hoursDisplay"
    android:layout_alignBottom="@+id/hoursDisplay"
    android:layout_alignLeft="@+id/daystext"
    android:text="@string/hours_lable"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/dayDisplay"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/hoursDisplay"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="22dp"
    android:text="@string/days"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textSize="48sp" />

<TextView
    android:id="@+id/daystext"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@+id/dayDisplay"
    android:layout_toRightOf="@+id/namespinner"
    android:text="@string/days_lable"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/minutesText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/minutesDisplay"
    android:layout_alignBottom="@+id/minutesDisplay"
    android:layout_alignLeft="@+id/hourstext"
    android:text="@string/minutes_lable"
    android:textAppearance="?android:attr/textAppearanceSmall" />

<TextView
    android:id="@+id/secondstext"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignBaseline="@+id/secondsDisplay"
    android:layout_alignBottom="@+id/secondsDisplay"
    android:layout_alignLeft="@+id/minutesText"
    android:text="@string/seconds_lable"
    android:textAppearance="?android:attr/textAppearanceSmall" />

这应该是主要活动的相关部分:


public class MainActivity extends Activity {

    static Spinner nameSpinner;
    ArrayAdapter nameAdapter;
    static ArrayList nameList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public void onResume() {
    super.onResume();

        // get spinner and init array if needed
        if (nameList == null) {
            nameSpinner = (Spinner) findViewById(R.id.namespinner);
            nameList = new ArrayList();
            nameList.add("( Add )");
        }

        // populate spinner
        nameAdapter = new ArrayAdapter(this,
            android.R.layout.simple_spinner_dropdown_item, nameList);
        nameSpinner.setAdapter(nameAdapter);

        // listen for events/selections on the spinner
        nameSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView parentView,
            View selectedItemView, int position, long id) {
            // read state
            }
        }


        @Override
        public void onNothingSelected(AdapterView parentView) {
            // do I want to do anything here?
        }

        });
    }
}

编辑清理代码显示并添加类def。和类变量。

2 个答案:

答案 0 :(得分:0)

您必须在oncreate方法中插入onresume方法中编写的代码!

答案 1 :(得分:0)

在一个if语句中设置微调器并没有与设置微调器有任何关系是导致问题的原因。通过改变这个:

if (nameList == null) {
        nameSpinner = (Spinner) findViewById(R.id.namespinner);
        nameList = new ArrayList();
        nameList.add("( Add )");
}

nameSpinner = (Spinner) findViewById(R.id.namespinner);
if (nameList == null) {
        nameList = new ArrayList();
        nameList.add("( Add )");
}

让它排序。

一个美好的夜晚睡眠和新鲜的眼睛所需的一切。 :P