Android, onClick, 2 компонета как объеденить для одного нажатия?
У меня есть ImageView и TextView они кликабельны и при нажатии на них должно переходить в с следующие активити (одно и тоже активити). Проблема в коде Java, я использую метод onClick. Как правильно написать код и чтобы он был компактнее?
Код XML
<LinearLayout
android:id="@+id/t_p_1_0"
style="@style/Tasks_LinearLayout_2"
android:onClick="onClick">
<ImageView
android:id="@+id/t_p_1_1"
style="@style/Tasks_ImageView_1"
android:contentDescription="@string/t_p_1"
app:srcCompat="@mipmap/t_p_1" />
<TextView
android:id="@+id/t_p_1_2"
style="@style/Tasks_TextView_1"
android:text="@string/t_p_1" />
</LinearLayout>
Код JAVA
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.t_p_1_1:
Intent tabtasksprapor1 = new Intent(this, q_p_1.class);
startActivity(tabtasksprapor1);
break;
case R.id.t_p_1_2:
Intent tabtasksprapor2 = new Intent(this, q_p_1.class);
startActivity(tabtasksprapor2);
break;
}
Ответы (2 шт):
Автор решения: igo
→ Ссылка
@Override
public void onClick(View v){
if (v.getId() == R.id.t_p_1_0){
Intent tabtasksprapor2 = new Intent(v.getContext(), q_p_1.class);
v.getContext().startActivity(tabtasksprapor2);
}
Автор решения: Спицко Дмитрий
→ Ссылка
Тут два варианта. Первый, как по мне предпочтительный, вешать слушатель не на сами кнопки, а на родительский лайаут.
findViewById(R.id.t_p_0_1).setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
Intent tabtasksprapor1 = new Intent(this, q_p_1.class);
startActivity(tabtasksprapor1);
break;
}
})
Второй вариант, который тут не очень интересен, но его стоит знать. Игра со switch-case, варианты можно группировать
switch (v.getId())
{
case R.id.t_p_1_1:
case R.id.t_p_1_2:
Log.w("W","t_p_1_1 или t_p_1_2 нажата")
Intent tabtasksprapor1 = new Intent(this, q_p_1.class);
startActivity(tabtasksprapor1);
break;
case R.id.another_view1:
case R.id.another_view2:
Log.w("W","view1 или view2 нажата")
break;
case R.id.another_view3:
Log.w("W","view3 нажата")
break;
}
