2014-10-21 2 views
0

누군가 내가 잘못 가고 있다고 말할 수 있습니까?코드에서 텍스트 뷰 텍스트 설정

나는 다른 뭔가으로 myText라는 내 텍스트 뷰를 변경하기 위해 노력하고있어,하지만 난하려고하면 오류 얻을 : java.lang.NullPointerException이 :에 의한

시도는 가상 메서드 'android.view를 호출합니다. 라고 setContentView 때까지보기 android.view.Window.findViewById android.app.Activity.findViewById (Activity.java:2071)에서 null 객체 참조 에 (INT)는 '

public class MainScreen extends Activity { 
    TextView texting = (TextView) findViewById(R.id.MyText); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main_screen); 
     texting.setText("Test"); 

}; 
} 

답변

4

이 같은 코드를 보는 방법이다 : 당신이 당신의 루트 레이아웃을 한 후에는 항상 귀하의 의견을 초기화한다

public class MainScreen extends Activity { 

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

     // If you're not using this view anywhere, you don't have to declare it globally. Use only a local variables 
     TextView texting = (TextView) findViewById(R.id.MyText); 
     texting.setText("Test"); 

    }; 
} 

. 이 경우에는 setContentView (R.layout.activity_main_screen); 이 시나리오는 활동에 적용됩니다.

조각을 사용하는 경우 onCreateView 메서드에서 루트 레이아웃을 확장 한 직후에 조각을 사용해야합니다.

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View view = (LinearLayout) inflater.inflate(R.layout.my_fragment, container, false); 
    // THIS is where you start initializing your views 
    return view; 
} 
+0

감사합니다. 내 머리를 들여 보내 주셨습니다. – Imsopov

+0

해피 코딩! :) – Mike

1

텍스트 뷰를 사용할 수 없습니다 . 따라서 MainScreen이 인스턴스화 될 때 findViewById은 null을 반환합니다. 다음과 같은 솔루션은 onCreate 방법에 findViewById 전화를 이동하는 것입니다 :

public class MainScreen extends Activity { 
    TextView texting; 

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

     texting = (TextView) findViewById(R.id.MyText); 

     texting.setText("Test"); 

    } 
} 
1

다음을 수행하십시오 : 같은

public class MainScreen extends Activity { 
    TextView texting; 

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

     texting = = (TextView) findViewById(R.id.MyText); 
     texting.setText("Test"); 

    }; 
} 

당신이 당신의에서 onCreate 방법 내부에 텍스트 뷰 객체를 초기화합니다.