0

In my code below I am able to edit a text from my first setText() call but not from within the callback.
The error I receive is a NullPointerException for title in the callback.
How do I set this up so I can edit the text from within the callback?

public class ListingActivity extends AppCompatActivity {
    final String TAG = "ListingActivity";
    TextView title;

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

        title = (TextView)findViewById(R.id.tvTitle);

        Intent intent = getIntent();
        final String listingId = intent.getStringExtra("ObjectId");

        setContentView(R.layout.listing_activity);
        Log.e(TAG, "listingId: " + listingId);

        title.setText("listingId");//fine

        ListingManager.getListing(listingId, new ListingCB() {
            @Override
            public void done(String error, Listing listing) {
                title.setText("listingId");//null pointer error
            }
        });
    }
}
Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
Chris Chevalier
  • 620
  • 1
  • 7
  • 20

2 Answers2

3

Your setContentView() method must be called before giving references using findViewById() method, so your code will be -

    public class ListingActivity extends AppCompatActivity {
    final String TAG = "ListingActivity";
    TextView title;

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

        title = (TextView)findViewById(R.id.tvTitle);

        Intent intent = getIntent();
        final String listingId = intent.getStringExtra("ObjectId");

        Log.e(TAG, "listingId: " + listingId);

        title.setText("listingId");//fine

        ListingManager.getListing(listingId, new ListingCB() {
            @Override
            public void done(String error, Listing listing) {
                title.setText("listingId");//null pointer error
            }
        });
    }
}
Paresh P.
  • 6,677
  • 1
  • 14
  • 26
1
title.setText("listingId");//fine

That shouldn't be fine...

You must put setContentView before any findViewById. That is number one reason why your TextView is null.

Your callback is fine.

OneCricketeer
  • 179,855
  • 19
  • 132
  • 245