2012-02-13 4 views
0

을 설정할 때 내가 (layout/my_test.xml를) 레이아웃 파일이 :NullPointerException이 : 텍스트 뷰 값

<TextView 
     android:id="@+id/my_title" 
     android:gravity="left|center_vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     /> 

내 활동 :

import android.support.v4.app.FragmentActivity; 
import android.view.View; 
import android.widget.TextView; 

public class MyActivity extends FragmentActivity{ 

    private View myTestView;  
    private TextView actionBarTitle; 

    @Override 
    protected void onCreate(Bundle arg0) { 
     super.onCreate(arg0); 

     myTestView = getLayoutInflater().inflate(R.layout.my_test, null); 
     myTitle = (TextView) findViewById(R.id.my_title); 

     //NullPointerException here !! 
     myTitle.setText(getString(R.string.hello)); 
    } 
} 

(나는 문제 확신 res/strings.xml에 관한 것이 아니기 때문에 LLO "문자열 리소스는 괜찮 다른 장소에서 사용되고있다.)

하는 이유는 TextView 내용을 설정할 때 내가 NullPointerException이있어?

전체 오류 추적 :

Caused by: java.lang.NullPointerException 
E/AndroidRuntime(17283): at com.test.MyActivity.onCreate(MyActivity.java:21) 
E/AndroidRuntime(17283): at com.eficode.card.CardActivity.onCreate(CarActivity.java:29) 
E/AndroidRuntime(17283): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
E/AndroidRuntime(17283): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2669) 
E/AndroidRuntime(17283): ... 11 more 
+0

화면에 어떤 것을 표시하도록 설정하지 않으십니까? – waqaslam

답변

4

myTitle이라는 = (텍스트 뷰) myTestView .findViewById (R.id.my_title) 다음과 같이 텍스트 뷰 ID를 작성; R.layout (

@Override 
    protected void onCreate(Bundle arg0) { 
     super.onCreate(arg0); 
     setContentView(R.layout.my_test); 

     myTitle = (TextView) findViewById(R.id.my_title); 

     myTitle.setText(getString(R.string.hello)); 
    } 
+0

안녕하세요! 고마워, 지금은 괜찮아. 하지만 Activity에서 findViewById를 직접 사용할 수없는 이유를 설명 할 수 있습니까? –

+0

다행 당신과 함께, 그녀는하지 않았다. –

0

당신이 어떤 일을 설정하지 않기 때문에 당신이 제대로에서 onCreate를 작성해야 화면에 표시 할 .your_layout_id); 그러나 당신이 어떤 레이아웃을 부 풀릴 때 당신은 다음과 같이 부 풀린 뷰에서 뷰의 ID를 얻어야 만합니다. view_id.find ....();

+0

아니요, 액티비티가 항상 콘텐트를 가질 필요가 없으므로 동의 할 수 없습니다. @ Venkata Krishna의 대답을 사용하면 코드가 잘 작동합니다. –

+0

네, 당신은 당신의 활동을 공란으로 유지할 수 있습니다. 그러나 당신이 아무 데나 보여지기를 원하지 않는다면 당신의 활동에있는 TextView의 시점조차도 무엇입니까? 이것이 android-developer가 말한 것입니다 :'하나의 활동은 사용자가 할 수있는 집중된 것입니다. 거의 모든 액티비티가 사용자와 상호 작용하기 때문에 액티비티 클래스는 setContentView (View)를 사용하여 UI를 배치 할 수있는 창을 만드는 데 도움이됩니다. – waqaslam

0

경우에만 ID의 직접 된 setContentView에 선언 된 레이아웃 뷰를 얻을 수 있습니다 :

+0

감사합니다. –