2013-08-05 3 views
0

다음은 내 코드입니다. 이것은 내 수업에서 이미지를 설정했기 때문에 앱을 닫습니다. 이것에 무슨 문제가있는 것 같습니까? 이미지를로드하는 더 쉬운 방법?코딩에서 ImageView를 사용하여 이미지 설정

public static class FiveSkills extends Activity{ 
    ImageView img = (ImageView) findViewById(R.id.img); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.image); 
     img.setImageResource(R.drawable.five_skills); 
    } 
} 

XML 레이아웃

<?xml version="1.0" encoding="utf-8"?> 

<ImageView 
    android:id="@+id/img" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginTop="59dp" 
    /> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginTop="15dp" 
    android:text="Five Skills" 
    android:textColor="#08088A" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

답변

3

여기서 문제는 시간이 방법을 사용하는 것입니다, 같이 findViewById (R.id.img) 당신의 뷰는 아직 부 풀리지 않았을 수도 있습니다. 코드가 작동하려면 setContentView가 호출 된 후 이미지를 참조해야합니다. :

ImageView img; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.image); 
    img = (ImageView) findViewById(R.id.img); 
    img.setImageResource(R.drawable.five_skills); 
} 

홉이 도움이됩니다.

감사합니다.

+1

"하지 않을 수도 있습니다"-> "" – dymmeh

+0

hehe, 맞습니다.보기가 아직 과장되지 않았습니다 ... –

+0

Wonderful! 고맙습니다. – ivesingh

1

부모보기가 확장되면 가장 좋은 방법은 하위보기를 가져 오는 것입니다. 그것이 "ANR"을 얻는 유일한 이유입니다.

클래스 옆에 Java 잡아 먹는 변수의 개념을 혼합하여 전역으로 만든 것처럼 보입니다. 맞아, 우리가 항상 그렇게 해. 그러나 그것이 XML Layout 파일에서보기를 잡으려고 올 때. 당신은 의 밑에 Activity의 처음에 일어나는 그것을 팽창시킬 필요가있다. 당신이 작업하는 것들의 라이프 사이클을 살펴 보는 것이 항상 낫습니다. 그럼 가서 Google을 Life Cycle of Activity 참고하시기 바랍니다.

코드는 것 다음과 같은 :

public static class FiveSkills extends Activity 
{ 
    protected void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.image); 
    ImageView img = (ImageView) findViewById(R.id.img); // Inflate child view once your parentview is available. 
    img.setImageResource(R.drawable.five_skills); 
    } 
} 

당신이 거 당신 Activity에서 사용 레이아웃 파일을 일단. 그런 다음 레이아웃 하위 뷰를 풀 준비가됩니다.

관련 문제