在下面的代码中,我可以在第一次setText()
来电时编辑文字,但不能在回调中编辑。
我收到的错误是回调中标题的NullPointerException
如何设置它以便我可以在回调中编辑文本?
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
}
});
}
}
答案 0 :(得分:3)
在使用setContentView()
方法提供引用之前,必须先调用findViewById()
方法,因此您的代码将为 -
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
}
});
}
}
答案 1 :(得分:1)
title.setText("listingId");//fine
那不应该没问题......
您必须先将setContentView
放在之前findViewById
。这是您的TextView
为空的首要原因。
你的回调很好。