Анализ местоположения в памяти исходного файла ImageButton вызывает ошибку, почему? - PullRequest
0 голосов
/ 17 сентября 2018

ОШИБКА, которую я не могу оправдать

Скажем, у нас есть место в памяти для отрисовки (я сохранил это в теге в файле XML), и мы используем его в качестве параметра для setImageResource(MEMORY_LOCATION). Я не могу заставить его работать, так как функция ожидает ввода int и к тому времени, когда я его анализирую ... Я получаю ошибку


Что я подразумеваю под ячейкой памяти


Точная точка зрения, которую я не понимаю, это Почему синтаксический анализ строки, представляющей ячейку памяти, в int ПРИЧИНА ОШИБКИ?

Если вы хотите узнать, почему я этого хочу или можете предложить другой способ решения проблемы, пожалуйста, прочитайте полное описание


Проблема, которую я пытаюсь решить, - найти источник из id

Скажем, у нас есть n ImageButtons, и мы хотим передать их drawable следующему Activity.

Одним из возможных способов было бы использование нескольких элементов case ...

public class MainActivity extends Activity {

public static int chosen_button;
private ImageButton image_Button_1;
private ImageButton image_Button_2;
...
private ImageButton image_Button_n;
private final int possible_Buttons[] = {R.drawable.imgbtn1,R.drawable.imgbtn2,...,R.drawable.imgbtnn};

private View.OnClickListener tweakedOnClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        switch(v.getId())
        {
            case R.id.imgbtn1:
                chosen_Button = possible_Buttons[0];
                break;
            case R.id.imgbtn2:
                chosen_Button = possible_Buttons[1];
                break;
            ...
            case R.id.imgbtnn:
                chosen_Button = possible_Buttons[n];
                break;
            default:
                throw new RuntimeException("Unknown button ID");
        }
        Intent activity_Main_To_Secondary = new Intent(MainActivity.this, SecondaryActivity.class);
        startActivity(activity_Main_To_Secondary);
    }
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    image_Button_1 = findViewById(R.id.imgbtn1);
    image_Button_2 = findViewById(R.id.imgbtn2);
    image_Button_n = findViewById(R.id.imgbtnn);

    image_Button_1.setOnClickListener(tweakedOnClickListener);
    image_Button_2.setOnClickListener(tweakedOnClickListener);
    image_Button_n.setOnClickListener(tweakedOnClickListener);
}
}

Затем, чтобы получить отрисовку (поскольку ImageButton подключается только к MainActivity через файл XML и вообще не подключается к SecondaryActivity), мы можем просто вызвать публика int chosen_button и это работает!

Но с несколькими операторами регистра и несколькими строками кода ...


Другой подход будет:

v.getId() дает идентификатор, место в памяти (думаю, указывая на файл XML?)

R.drawable.triangle дает src, место в памяти, указывающее на файл png.

Так как нет функции, возвращающей ячейку памяти drawable путем ввода id, я попытался установить тег в файле сечения XML в MainActivity в ячейку памяти каждого рисованного объекта. Выглядит так:

<ImageButton

    android:id="@+id/imgbtn1"
...
    android:tag="‭2130903048"
    <!-- Does it make any difference if it is written in hex, binary or decimal??? -->
    android:src="@drawable/imgbtn1"

Все работает с того момента, когда вы пытаетесь v.getTag().toString() в MainActivity, но к тому времени, когда я пытаюсь проанализировать его с Int (или putExtra с намерением, связывающим основные и дополнительные действия), приложение разрывается, приводя к вопрос моего поста.

Intent activity_Main_To_Draw = getIntent();
String mem_location = activity_Main_To_Secondary.getStringExtra("$mem_loc");
Integer.parseInt(mem_location)
...