3

現在、ある数値システムから別の数値システムに値を変換するアプリを開発しています。ユーザーが自分の「お気に入り」変換を設定できるようにするコードをいくつか定義しました。

次のコードは、保存されている「conversion from」と「conversion to」の値を読み取り、対応するフラグメントをスワイプ ビューに設定します。また、フラグメント内の対応する 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();
    }

}

私が遭遇する問題は、「バイナリ」および「10 進数」の if ステートメントで RadioButtons が正しく初期化され、コードが機能することですが、「8 進数」および「16 進数」の部分では、そのコードの場合でも RadioButtons が初期化されていません。実行中です。ID はすべて正しいです。クロスチェックしました。これは、スワイプ ビューからのフラグメント (8 進数) の 1 つの 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="01234567."
    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 プログラミングを学んでいるので、コードが非効率的で子供じみていたらすみません。前もって感謝します。:)

4

1 に答える 1

0

2 進数、10 進数、8 進数、16 進数のコードで同じ ID を指定していません。それが私がそれを信じることを拒否する理由ですAll the id's are correct。以下の私の提案に従ってコードを変更する必要があります。layout.xml、R.java を見せてください。そうすれば、ハードコードされた ID 値は問題ではないと思います。

だから私はもう一度言います:

NEVER NEVER NEVER NEVER EVER (申し訳ありませんが、これを十分に強調することはできません) そのようなビュー ID をハードコードします。R.id の値を使用します。代わりは。整数値は、R.id の値を使用して頻繁に変更されます。それが正しいことを確認します。コード内の値を参照すると、R.id.うまくいくと確信しています。

于 2013-09-19T23:20:49.990 に答える