2014-01-12 36 views
-1

當我第一次啓動我的應用程序時,所有顯示和工作都正常,但是當我關閉並重新打開它時,在我的相對佈局頂部彼此相鄰的微調器和按鈕只有它們平時身高的一半左右而微調不可用。如果我點擊它沒有下降(但按鈕像往常一樣工作)。微調器下面的其他元素,但照常顯示。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。和類變量。

+0

對於初學者,請爲微調器發佈佈局XML,「活動」代碼和自定義適配器(如果有) –

+1

發佈您的代碼。這非常相關。 – JiTHiN

+0

對不起,我應該早些時候添加一些代碼,我只是不確定要發佈什麼。 我只是試圖在線性佈局中包裝微調器和按鈕,但它以相同的行爲結束。 –

回答

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

0

你必須在oncreate方法中插入寫在onresume方法中的代碼!

+0

我試過了你的建議,但沒有影響程序的運行。對於可能導致此行爲的原因,我真的很失落。爲什麼它第一次完美運作,但不是在那之後呢?有什麼可以改變? –