2014-06-08 2 views
3

제발 저와 함께 곰을 빕니다. 나는 안드로이드 프로그래밍에 익숙합니다. 안드로이드에서 버튼 클릭으로 이미지를 표시하려고했지만 불행히도 내 에뮬레이터가 필요한 출력을 표시하지 않습니다. 여기에뮬레이터가 버튼 클릭시 이미지를 표시하지 않습니다. android

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 


<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/textView1" 
    android:layout_below="@+id/textView1" 
    android:layout_marginTop="14dp" 
    android:text="Button" /> 

</RelativeLayout> 

main_activity.java

package com.example.app1; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.view.View; 
import android.view.View.OnClickListener; 

public class MainActivity extends Activity { 
Button button; 
ImageView image; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
     } 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 


public void addListenerOnButton() { 

    button = (Button) findViewById(R.id.button1); 

    button.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 


        image.setImageResource(R.drawable.optimus); 

     } 

    }); 


} 

} 나는/입술/당김 - MDPI에서 이미지 파일을 포함했다

내 layout.xml 파일입니다. 에뮬레이터에서 실행을 시도하면 버튼 클릭시 이미지가 표시되지 않습니다. 코드에 문제가 있습니까? 당신의에서 onCreate() 메소드에서

+0

자바 파일에 버튼이 있어도 청취자 또는 이미지를 클릭 할 필요가 없습니다. –

+0

나는 u를 얻지 못했습니다. 내 코드를 편집하고 실수를 지적하십시오. 사전에 Thx를 기대하십시오. – Darpit

+1

레이아웃에 ** ImageView **가 없습니다. 존재하지 않는 객체에 어떻게 이미지를 넣는 것처럼 가장합니까? ** textView1 ** ... android : layout_alignLeft = "@ + id/textView1"라는 이름의 컨트롤을 가지고 있지 않습니까? 아니면 레이아웃을 훼손했다고 가정해야합니까? ** 전체적으로 ** 표시 할 수 있습니까? –

답변

0

, 당신은 그것을 할당해야
, 당신은 이미지 뷰가 imageView1라고했다고 가정을 사용하기 전에.

그래서이를 변경 :

@Override 
    public void onClick(View arg0) 
    { 
     image.setImageResource(R.drawable.optimus); 
    } 

@Override 
    public void onClick(View arg0) 
    { 
     image = (ImageView) findViewById(R.id.imageView1); 
     image.setImageResource(R.drawable.optimus); 
    } 
1

이 좀 쓰기 :

Button theButton = (Button)findViewById(R.id.button1); 
theButton.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

theButton.setBackgroundResource(R.drawable.optimus); 
     } 
+0

을 줄 것입니다. 만약 이것이 작동하면 알려주세요.이 시도는 addListenerOnButton() 메소드를 삭제하십시오. 감사합니다. – BugaIulian

+0

Bro는 charm처럼 작동했습니다 ... 답장을 보내 주셔서 감사합니다 ... – Darpit

0

에 당신이 코드와 같은 온 클릭 메소드를 작성해야하고 또한 당신이에서 onCreate() 메소드에 addListenerOnButton 메소드를 호출 할 필요가

package com.example.app1; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.view.View; 
import android.view.View.OnClickListener; 

public class MainActivity extends Activity { 
    Button button; 

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

     addListenerOnButton(); 
    } 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
// Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 


public void addListenerOnButton() { 

    button = (Button) findViewById(R.id.button1); 

    button.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View arg0) { 


       button.setBackgroundResource(R.drawable.optimus); 

    } 

    }); 


} 

}

0

이를 시도해보십시오 된 .java 파일에서 다음

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/background" <!-- you're adding this here --> 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" > 


<Button 
    android:id="@+id/button1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignLeft="@+id/textView1" 
    android:layout_below="@+id/textView1" 
    android:layout_marginTop="14dp" 
    android:onClick="showImage" <!-- you're adding this here --> 
    android:text="Button" /> 

</RelativeLayout> 

...

Package com.example.app1; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.widget.Button; 
import android.widget.ImageView; 
import android.view.View; 
import android.view.View.OnClickListener; 

public class MainActivity extends Activity { 
Button button; 
ImageView image; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
     } 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 


public void showImage(View view) { 
    RelativeLayout background = (RelativeLayout) findViewById(R.id.background); 
    background.setBackgroundResource(R.drawable.optimus); 
} /* This is a whole new section of code to replace the onClick listener */ 

} 

을 이미 XML 레이아웃을 사용하고 있기 때문에, 가능하면 온 클릭 리스너에 내장 사용하려고합니다. 단일 인수가 (View view)yourFunctionName이라는 .java 파일에서 함수의 이름을 지정하면이 작업을 수행 할 수 있습니다. 그런 다음 XML에서 onClick 메서드가 필요한보기에 android:onClick="yourFunctionName"을 추가하여 XML을 가리켜 야합니다.

마지막으로 실제로 가리키고있는 이미지를 본 적이 없었습니다. 당신은 단순히 객체 "이미지"가 "R.drawable.optimus"를 사용했지만 이미지가 사용되지 않았다고 말했을뿐입니다! 그래서 대신, 당신의 RelativeView 배경에 배치하는 것을 지적했습니다. 대신 별도의 이미지에 넣고 싶다면 ImageView을 XML 파일에 추가하고 ImageView의 배경 리소스를 같은 방식으로 설정해야합니다.

안드로이드 배우기에 가장 좋은 행운!

+0

저는 여러분의 솔루션이 onClick 리스너를 사용하여 최상의 코딩 방법을 따르고 있다고 생각합니다. 설명 주셔서 감사합니다 그것은 초보자에게 많은 것을 의미합니다. – Darpit

+0

안녕하세요, 우리는 처음부터 모두 시작했습니다. 당신이 "경험이있다"고해도 우리는 여전히 마음에 새내기입니다. 내 대답이 도움이된다면, 대답을 upvote하고 "받아 들일"것을 기억하십시오. 감사. –

관련 문제