2017-10-16 5 views
-3

이미지보기 위에 Button을 배치 한 상대 레이아웃을 사용하고 있습니다.중복되는 클릭을 피하는 방법은 무엇입니까?

버튼과 이미지보기 모두에서 OnClick을 사용하는 데 문제가 있습니다. 즉, 클릭 한 경우 메서드를 호출 할 때 버튼이 클릭되고 다른 메서드가 클릭되면 이미지가 호출됩니다. 앱 강제 종료 버튼을 클릭하면 즉, 런타임 예외가 발생합니다.

activity_main.xml :

<Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="click" 
     android:onClick="sampleClick" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:layout_marginTop="125dp" 
     android:id="@+id/button" /> 

    <ImageView 
     android:id="@+id/imageView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     app:srcCompat="@drawable/oreo" 
     android:onClick="imageClick" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentStart="true" /> 

MainActivity.java :

public void sampleClick(View view){ 
     Toast.makeText(MainActivity.this,"Button Click",Toast.LENGTH_LONG).show(); 

    } 

    public void imageClick(View view){ 
     Toast.makeText(MainActivity.this,"Image Click",Toast.LENGTH_LONG).show(); 
    } 

이 나 오류를 해결하는 데 도움이됩니다.

enter image description here

+0

오류 로그 게시 – Anonymous

+0

** _ 오류 _ ** 해결 방법. 먼저 오류가 무엇인지 알리십시오. 오류 로그 붙여 넣기 –

+0

@IntelliJAmiya 무엇을 위해? ahaha 쉬운 작업 frame_layout을 사용해야하는 이유는 무엇입니까? – Peter

답변

2

자바 파일에서 런타임

에서보기에 청취자를 클릭하여 설정, 레이아웃 XML 파일에서 온 클릭을 제거

//setting click listeners 

findViewById(R.id.imageView).setOnClickListener(this); 
findViewById(R.id.button).setOnClickListener(this); 

//implement you java class with View.OnClickListener interface and override onClick method 

@Override 
public void onClick(View v){ 

     switch(v.getId()){ 

      case R.id.imageView: 
        Toast.makeText(MainActivity.this,"Image Click",Toast.LENGTH_LONG).show(); 
        break; 

      case R.id.button: 
        Toast.makeText(MainActivity.this,"Button Click",Toast.LENGTH_LONG).show(); 
        break; 

     } 
} 
1

봅니다 주위를 전환합니다.

<ImageView 
    android:id="@+id/imageView" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    app:srcCompat="@drawable/oreo" 
    android:onClick="imageClick" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentStart="true" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="click" 
    android:onClick="sampleClick" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="125dp" 
    android:id="@+id/button" /> 

버튼이 이미지 뷰 '위에'될 것입니다 이런 식으로

+0

그는 이미 이미지 뷰 위에 버튼을 가지고 있습니다. – Anonymous

관련 문제