I have a text view in my Lyout and I would like to set some text to this textview. This should be made in a class which is not a MainActivity class.
The problem is t
findViewById(R.id.EmailTextView);
You either
EDIT: definitely the 1 based on your new comments.
When you call findViewById
matters. The layout must have already happened. You must already have set a content view, etc.
There are ways to work around this, as shown in other answers, but they work fundamentally differently from findViewById
, and should only be used as a substitute if you understand exactly how they work. Most often it's far more efficient to just wait until after the initial layout has already occurred.
Calling findViewById()
on the Activity
object will only work if the current Activity layout is set by setContentView
. If you add a layout through some other means, then you need the View
object of the layout and call findViewById()
on it.
View v = inflater.inflate(id_number_of_layout); # such as R.layout.activity_main
View innerView = v.findViewById(id_number_of_view_inside_v);
If the layout is supposed to be the main layout of the activity, then do this:
public class MyActivity extends Activity{
TextView emailTextView;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(id_number_of_layout);
emailTextView = (TextView) findViewById(R.id.EmailTextView);
// ... whatever other set up you need to do ...
}
public void getUserInformation() {
// .... regular code ...
}
}
You have not set the content View yet?
to do this use something like this:
public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}