0

トグル ボタンが isChecked() であるかどうか、およびその背景が特定のドローアブルと等しいかどうかを確認しようとしています。私はこれを2時間以上取得しようとしてきましたが、解決策がわかりません。

トグルボタンには、ボタンの状態が変更されたときに設定されるはずの画像を含むxmlが設定されています

これは私がこれまでに試みたものです

tbTest1.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                if (tbTest1.isChecked())
                {
                    if(tbTest1.getBackground().equals("testimg.png")) {
                        Toast.makeText(Test.this, "Test Image Added", Toast.LENGTH_LONG).show();
                    }
                }
                else
                {
                    //fileNames.add("testimg.png");
                    //isChecked--;
                    Toast.makeText(Test.this, "Test Image Removed", Toast.LENGTH_LONG).show();
                }
            }
        });

これでは結果が得られません

私もこれを試しました

tbTest1.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                if (tbTest1.isChecked() && tbTest1.getBackground().equals(R.drawable.testimg))
                {
                        Toast.makeText(Test.this, "Test Image Added", Toast.LENGTH_LONG).show();
                }
                else
                {
                    Toast.makeText(Test.this, "Test Image Removed", Toast.LENGTH_LONG).show();
                }
            }
        });

これは ELSE ステートメントに直接スキップします

testimg の xml は次のとおりです。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/testimg1"
    android:state_checked="false" />
<item android:drawable="@drawable/testimg2"
    android:state_checked="true"/>

</selector>

アクティビティが読み込まれると、TB 状態はオフになり、イメージは testimg1 に設定されます。ユーザーが TB を押すと、状態が on に変わり、画像が testimg2 に変わり、(後で追加される ArrayList に) 追加されたというメッセージをトーストします。ユーザーがもう一度押すと、(前述の ArrayList から) 削除されたことを示すトーストが表示されるはずです。

4

1 に答える 1

0

このようなことをしてみてください。

更新された回答:

インサイド アクティビティ A

tbTest1.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                if (tbTest1.isChecked()){
                //Button is checked, add image String name into ArrayList<String> mArray;                   

                }
                else
                {
                 //Button is not checked, remove the image String name from ArrayList<String> mArray;
                }
            }
        });

にデータを入力するArrayList<String> mArrayと、アクティビティ B に移動するボタンが表示されるはずです。

バンドルを作成し、ArrayList<String> mArray;

    Bundle mBundle = new Bundle();
    mBundle.putStringArrayList("ARRAYLIST", mArray);

アクティビティ B へのデータの送信

Intent intent = new Intent();
intent.setClass(this, ACTIVITY_B.class);
intent.putExtra("BUNDLE", mBundle);
startActivity(intent);

インサイド アクティビティ B

ArrayList<String> mArray = new ArrayList<String>();


@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  Bundle extras = getIntent().getExtras();
  if (extras != null) {
   Bundle mBundle = extras.getBundleExtra("BUNDLE");
   if (mBundle != null) {
        // do stuff
        //pull the ArrayList out of the Bundle and create a new ArrayList<String>

        mArray = mBundle.getStringArrayList("ARRAYLIST")   ; 

        // You now have the ArrayList<String> from Activity A, you can create and if statement, or some type of logic to handle generating pictures based on the String Names.


   }        
}

更新 2:

インサイド アクティビティ B

この方法で Drawable にアクセスできるはずです。

tbTest1.setOnClickListener(new View.OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                if (tbTest1.isChecked(){
                        Toast.makeText(Test.this, "Test Image Added", Toast.LENGTH_LONG).show();

                        Drawable currentDrawable = tbTest1.getBackground();
                        //set currentDrawable to the background of a temporary image view

                         mImageView.setBackground(currentDrawable);

                }
                else
                {
                    Toast.makeText(Test.this, "Test Image Removed", Toast.LENGTH_LONG).show();
                }
            }
        });
于 2015-03-19T16:38:37.797 に答える