2013-09-19 2 views
3

В настоящее время я разрабатываю приложение для преобразования значений из одной системы счисления в другую. Я определил некоторый код, который позволяет пользователю устанавливать его «любимое» преобразование.RadioButton не получает инициализацию

Следующий код считывает сохраненное значение «преобразование из» и «преобразование в» и устанавливает соответствующий фрагмент в режиме салфетки. Кроме того, соответствующая RadioButton в фрагменте проверяется: (обновленный код):

public void putFav() { 
    RadioButton b1,b2,b3; 
    String from=prefs.getString("from", "--"); 
    String to=prefs.getString("to", "--"); 
    if(from.contentEquals("Binary")) 
    { 
     b1=(RadioButton)findViewById(R.id.bToD); 
     b2=(RadioButton)findViewById(R.id.bToO); 
     b3=(RadioButton)findViewById(R.id.bToH); 
     mViewPager.setCurrentItem(1); 
     BinFragment ob=new BinFragment(); 
     ob.onCreateView(getLayoutInflater(), mViewPager, mCollectionPagerAdapter.args); 
     if(to.contentEquals("Decimal")) 
     { 
      //Toast.makeText(getApplication(), String.valueOf(ob.DecButton.getId())+" "+String.valueOf(ob.OctButton.getId())+" "+String.valueOf(ob.HexButton.getId())+" ", Toast.LENGTH_LONG).show(); 
      b1.setChecked(true); 
      b2.setChecked(false); 
      b3.setChecked(false); 
     } 
     if(to.contentEquals("Octal")) 
     { 

      b1.setChecked(false); 
      b2.setChecked(true); 
      b3.setChecked(false); 
     } 
     if(to.contentEquals("Hexadecimal")) 
     { 

      b1.setChecked(false); 
      b2.setChecked(false); 
      b3.setChecked(true); 
     } 
    } 
    else if(from.contentEquals("Decimal")) 
    { 
     b1=(RadioButton)findViewById(R.id.dToB); 
     b2=(RadioButton)findViewById(R.id.dToO); 
     b3=(RadioButton)findViewById(R.id.dToH); 
     mViewPager.setCurrentItem(0); 
     DecFragment ob=new DecFragment(); 
     ob.onCreateView(getLayoutInflater(), mViewPager, mCollectionPagerAdapter.args); 
     if(to.contentEquals("Binary")) 
     { 
      b1.setChecked(true); 
      b2.setChecked(false); 
      b3.setChecked(false); 

     } 
     if(to.contentEquals("Octal")) 
     { 

      b1.setChecked(false); 
      b2.setChecked(true); 
      b3.setChecked(false); 
     } 
     if(to.contentEquals("Hexadecimal")) 
     { 
      b1.setChecked(false); 
      b2.setChecked(false); 
      b3.setChecked(true); 
     } 
    } 
    else if(from.contentEquals("Octal")) 
    { 
     b1=(RadioButton)findViewById(R.id.oToB); 
     b2=(RadioButton)findViewById(R.id.oToD); 
     b3=(RadioButton)findViewById(R.id.oToH); 
     mViewPager.setCurrentItem(2); 
     OctFragment ob=new OctFragment(); 
     ob.onCreateView(getLayoutInflater(), mViewPager, mCollectionPagerAdapter.args); 
     if(to.contentEquals("Decimal")) 
     { 
      Toast.makeText(getApplication(), String.valueOf(ob.BinButton.getId())+" "+String.valueOf(ob.DecButton.getId())+" "+String.valueOf(ob.HexButton.getId())+" ", Toast.LENGTH_LONG).show(); 
      /*b1.setChecked(false); 
      b2.setChecked(true); 
      b3.setChecked(false);*/ 
     } 
     if(to.contentEquals("Binary")) 
     { 

      b1.setChecked(true); 
      b2.setChecked(false); 
      b3.setChecked(false); 
     } 
     if(to.contentEquals("Hexadecimal")) 
     { 

      b1.setChecked(false); 
      b2.setChecked(false); 
      b3.setChecked(true); 
     } 
    } 
    else if(from.contentEquals("Hexadecimal")) 
    { 

     b1=(RadioButton)findViewById(R.id.hToB); 
     b2=(RadioButton)findViewById(R.id.hToO); 
     b3=(RadioButton)findViewById(R.id.hToD); 
     mViewPager.setCurrentItem(3); 
     HexFragment ob=new HexFragment(); 
     ob.onCreateView(getLayoutInflater(), mViewPager, mCollectionPagerAdapter.args); 
     if(to.contentEquals("Decimal")) 
     { 
      //Toast.makeText(getApplication(), String.valueOf(ob.BinButton.getId())+" "+String.valueOf(ob.OctButton.getId())+" "+String.valueOf(ob.DecButton.getId())+" ", Toast.LENGTH_LONG).show(); 
      b1.setChecked(false); 
      b2.setChecked(false); 
      b3.setChecked(true); 
     } 
     if(to.contentEquals("Octal")) 
     { 

      b1.setChecked(false); 
      b2.setChecked(true); 
      b3.setChecked(false); 
     } 
     if(to.contentEquals("Binary")) 
     { 

      b1.setChecked(true); 
      b2.setChecked(false); 
      b3.setChecked(false); 
     } 
    } 
    else 
    { 
     Toast.makeText(this, "Favourites Not Declared. Settings->Set Favourite Conversion", Toast.LENGTH_LONG).show(); 
    } 

} 

Проблема я сталкиваюсь в том, что в «Binary» и «десятичной» если-заявления на Radiobuttons будут инициализируется правильно и код но в «Octal» и «Hexadecimal» часть RadioButtons не инициализируется даже тогда, когда этот код выполняется. Все идентификаторы верны, я перекрестно проверил их. Это layout.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=".OctFragment" 
> 

<TextView 
    android:id="@+id/textView1" 
    android:textColor="#FFFFFF" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginTop="10dp" 
    android:text="@string/oct_msg" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<EditText 
    android:id="@+id/editText1" 
    android:textColor="#FFFFFF" 
    android:layout_width="125dp" 
    android:layout_height="wrap_content" 
    android:layout_below="@+id/textView1" 
    android:layout_alignLeft="@+id/textView1" 
    android:digits="." 
    android:layout_marginTop="10dp" 
    android:ems="10" 
    android:inputType="number" > 

    <requestFocus /> 
</EditText> 

<TextView 
    android:id="@+id/textView2" 
    android:textColor="#FFFFFF" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/editText1" 
    android:layout_below="@+id/editText1" 
    android:layout_marginTop="45dp" 
    android:text="@string/convert_msg" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<RadioButton 
    android:id="@+id/oToB" 
    android:textColor="#FFFFFF" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/textView2" 
    android:layout_below="@+id/textView2" 
    android:layout_marginTop="2dp" 
    android:text="@string/binary" /> 

<RadioButton 
    android:id="@+id/oToD" 
    android:textColor="#FFFFFF" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/oToB" 
    android:layout_below="@+id/oToB" 
    android:layout_marginTop="1dp" 
    android:text="@string/decimal" /> 

<RadioButton 
    android:id="@+id/oToH" 
    android:layout_width="wrap_content" 
    android:textColor="#FFFFFF" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/oToD" 
    android:layout_below="@+id/oToD" 
    android:layout_marginTop="1dp" 
    android:text="@string/hexa" /> 

<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textColor="#FFFFFF" 
    android:layout_below="@+id/oToH" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="25dp" 
    android:text="@string/convert" /> 

<TextView 
    android:id="@+id/textView5" 
    android:layout_width="wrap_content" 
    android:textColor="#FFFFFF" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/textView2" 
    android:layout_toRightOf="@+id/editText1" 
    android:layout_margin="5dp" 
    android:text="@string/equals" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<TextView 
    android:id="@+id/textView3" 
    android:layout_width="wrap_content" 
    android:textColor="#FFFFFF" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/textView2" 
    android:layout_alignParentRight="true" 
    android:layout_toRightOf="@+id/textView5" 
    android:layout_margin="5dp" 
    android:hint="@string/null_string" 
    android:text="@string/null_string" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

Если кто-нибудь знает, исправление, или фактор вызывающий проблемы, пожалуйста, ответ. :)

И я все еще изучаю Java-программирование, поэтому извините меня, если код неэффективен и работает на кидиш. Спасибо заранее. :)

+5

'b1 = (RadioButton) findViewById (2131296268);' ** НИКОГДА не существует ** таких типов жесткого кода. Вместо этого используйте значение из 'R.id. <ваш идентификатор вида здесь>'. Целочисленные значения часто меняются, используя значение из 'R.id.', убедитесь, что оно правильно. –

+0

Опубликуйте файл макета .xml и используйте идентификаторы из макета. –

+0

Вы говорите, что «в« восьмерке »и« шестнадцатеричной »части RadioButtons не инициализируются», поэтому я должен спросить: что происходит, когда вы запускаете эту часть кода? Сбой приложения? Разве это ничего не показывает в вашей деятельности? Потому что если приложение ** не терпит крах и кажется, что ничего не происходит, то они инициализируются, они просто инициализируются RadioButton, который в настоящее время не отображается. –

ответ

0

Вы не указываете те же идентификаторы в двоичном, десятичном, восьмеричном и шестнадцатеричном коде. Вот почему я отказываюсь верить, что All the id's are correct. Вам нужно будет изменить свой код в соответствии с моим предложением ниже, покажите мне ваш layout.xml, R.java, а затем я буду считать, что жестко закодированные id-значения не являются проблемой.

Так что я еще раз говорю:

НИКОГДА НИКОГДА НИКОГДА НЕ НИКОГДА (я извиняюсь, но я действительно не могу подчеркнуть это достаточно) вид жестко закодировать идентификаторы, как это. Используйте значение от R.id. вместо. Целочисленные значения часто меняются, используя значение из R.id. убедитесь, что это правильно. Если вы ссылаетесь на значения R.id. в своем коде, я уверен, что он будет работать на вас.

+0

Спасибо за ваш интерес. Сначала я использовал теги идентификатора вместо значений, но я подумал, что это может быть проблема, так временно изменившаяся. Но та же проблема сохраняется. Я думаю, что это как-то связано с логикой if-else-if. Поскольку «десятичный» код работает идеально, но более поздние два кода этого не делают. – anks257

+0

Редактировать свой вопрос с помощью обновленного кода и добавить свой макет.xml, и я вижу. –

+0

Я обновил свой вопрос с измененным кодом и файлом макета для одного из фрагментов (тот, который дает проблему) – anks257

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