문제

I know there's a couple of questions about this out there but I still don't get it. I have an activity

package test.example.om;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import test.example.om.Texter;

public class TextActivity extends Activity {
   /** Called when the activity is first created. */

    public String text="Helloo";
    @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       Texter myTexter = new Texter(); 
       myTexter.textTexter();


   }
    public void textSet(){
        TextView tv = (TextView) findViewById(R.id.myTextViewInXml);
           tv.setText(text);
}
}

And a class Texter

package test.example.om;

import android.widget.TextView;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class Texter extends Activity{
String string="Helloo";


public void textTexter(){
    TextView tv = (TextView) findViewById(R.id.myTextViewInXml);
       tv.setText(string);
}
}

The LogCat is showing a NullPointerException and the app crashes. What am I doing wrong and how can I setText to the TextView from another class than the main activity class?

도움이 되었습니까?

해결책

You are instantiating an activity subclass and you're not supposed to do that... Also, you are trying to findViewById (in the Texter class) while your context is null, since you haven't gone through the correct Activity lifecycle.

In order to change the text of the text view, simply move the textTexter method from Texter to TextActivity and call it. Remove the Texter activity as it's unused.

package test.example.om;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
import test.example.om.Texter;

public class TextActivity extends Activity {
   /** Called when the activity is first created. */

    public String text="Helloo";
    @Override
   public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
       TextView tv = (TextView) findViewById(R.id.myTextViewInXml);
       tv.setText(text);


   }

}

EDIT: Just noticed you want to do it from another class. To do that, simply give a reference to the text view you want to change and setText on it

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top