ОШИБКА, которую я не могу оправдать
Скажем, у нас есть место в памяти для отрисовки (я сохранил это в теге в файле 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)