[英]Android: Context is null when passed to method
在我的應用程序類中,InboxTabFragment的實例化如下所示:
InboxTabFragment.java
public class InboxFragmentTab extends ListFragment implements LoaderManager.LoaderCallbacks<Cursor> {
private static final Uri SMS_CONTENT_URI = Uri.parse("content://sms");
private static final Uri SMS_INBOX_CONTENT_URI = Uri.withAppendedPath(SMS_CONTENT_URI, "inbox");
private static final String COLUMNS[] = new String[] {"person", "address", "body", "date", "type"};
SimpleCursorAdapter adapter;
Context context;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.inbox_layout, container, false);
getLoaderManager().initLoader(0, null, this);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
CursorLoader loader = new CursorLoader(this.getActivity(), SMS_INBOX_CONTENT_URI, COLUMNS,
null, null, null);
return loader;
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor c) {
ArrayList<Sms> result = new ArrayList<Sms>();
if(c!=null) {
for(boolean hasData = c.moveToFirst(); hasData; hasData=c.moveToNext()){
boolean isSent = c.getInt(c.getColumnIndex("type")) == 2;
String address = c.getString(c.getColumnIndex("address"));
String sender = ContactManager.getContactName(context, address);
String receiver = "Me";
Sms sms = new Sms(address, c.getString(c.getColumnIndex("body")), new Date(Long.parseLong(c.getString(c.getColumnIndex("date")))), isSent ? sender : receiver);
sms.setSender(isSent ? receiver : sender);
result.add(sms);
}
}
SmsAdapter adapter = new SmsAdapter(getActivity(), R.layout.row, result);
setListAdapter(adapter);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
}
問題發生在網上:
String sender = ContactManager.getContactName(context, address);
方法參數中傳遞的上下文為null,我不知道如何處理。 如果有人想幫助我解決此問題,我將不勝感激。
嘗試context = this.getActivity().getApplicationContext();
在使用它之前。
您永遠不會將值分配給context
對象。 加:
context = this.getActivity().getApplicationContext();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.