2014-01-12 4 views
-1

Когда я впервые запускаю свое приложение, все отображается и работает правильно, но когда я закрываю и снова открываю его, прядильщик и кнопка, которые сидят рядом друг с другом в верхней части моей относительной компоновки, составляют примерно половину их обычной высоты и счетчик не используется. Если я нажму, то ничего не падает (но кнопка работает как обычно). Другие элементы ниже счетчика и отображаются как обычно.spinner непригодным для использования и неправильным отображением

Я потратил полдня на поиск в Google и код приложения и макет 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, код 'Activity' и пользовательский адаптер для счетчика (если есть) –

+1

Отправьте свой код. Это очень актуально. – JiTHiN

+0

Извините, я должен был добавить код раньше, я просто не знал, что именно писать. Я только что попробовал обернуть вращатель и кнопку в linearlayout, но это закончилось тем же самым поведением. –

ответ

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

Вы должны ввести код, написанный в методе onresume, в методе oncreate!

+0

Я попробовал ваше предложение, но это не повлияло на работу программы. Я действительно теряю за то, что может вызвать такое поведение. Почему он работает отлично в первый раз, но не после этого? Что может измениться? –

Смежные вопросы