Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trial
JIHOON JUNG
10,927 Pointsjava.lang.IllegalStateException: Content view not yet created
package treehouse.example.com.treehousechat;
import android.os.Bundle; import android.support.v4.app.ListFragment; import android.support.v7.app.ActionBarActivity; import android.support.v7.app.AlertDialog; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ListView;
import com.parse.FindCallback; import com.parse.ParseException; import com.parse.ParseObject; import com.parse.ParseQuery; import com.parse.ParseRelation; import com.parse.ParseUser;
import java.util.ArrayList; import java.util.List;
import constant.ParseConstants;
This is my code
public class RecipientsActivity extends ActionBarActivity {
public static MenuItem mSendMenuItem;
public PlaceholderFragment placeholderFragment;
public RecipientsActivity() {
placeholderFragment = new PlaceholderFragment();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_recipients);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_send:
ParseObject message = placeholderFragment.createMessage();
// send(message);
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_recipients, menu);
mSendMenuItem = menu.getItem(0);
return true;
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends ListFragment {
public final String TAG = PlaceholderFragment.class.getSimpleName();
public List<ParseUser> mFriends;
public ParseRelation<ParseUser> mFriendsRelation;
public ParseUser mCurrentUser;
private ListView mListView;
public PlaceholderFragment() {
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
// getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_recipients, container, false);
return rootView;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
@Override
public void onResume() {
super.onResume();
mCurrentUser = ParseUser.getCurrentUser();
mFriendsRelation = mCurrentUser.getRelation(ParseConstants.KEY_FRIENDS_RELATION);
ParseQuery<ParseUser> query = mFriendsRelation.getQuery();
query.addAscendingOrder(ParseConstants.KEY_USERNAME);
mFriendsRelation.getQuery().findInBackground( new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> parseUsers, ParseException e) {
if (e == null) {
mFriends = parseUsers;
String[] usernames = new String[mFriends.size()];
int i = 0;
for (ParseUser user : mFriends) {
usernames[i] = user.getUsername();
i++;
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getListView().getContext(),
android.R.layout.simple_list_item_checked,
usernames);
getListView().setAdapter(adapter);
getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
} else {
Log.e(TAG, e.getMessage());
AlertDialog.Builder builder = new AlertDialog.Builder(getListView().getContext());
builder.setMessage(e.getMessage())
.setTitle(R.string.error_title)
.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
if (l.getCheckedItemCount() >0) {
mSendMenuItem.setVisible(true);
} else {
mSendMenuItem.setVisible(false);
}
}
public ParseObject createMessage() {
ParseObject message = new ParseObject(ParseConstants.CLASS_MESSAGES);
message.put(ParseConstants.KEY_SENDER_ID, ParseUser.getCurrentUser().getObjectId());
message.put(ParseConstants.KEY_SENDER_NAME, ParseUser.getCurrentUser().getUsername());
message.put(ParseConstants.KEY_RECIPIENT_IDS, getRecipientsIds());
return message;
}
protected ArrayList<String> getRecipientsIds() {
ArrayList<String> recipientsIds = new ArrayList<String>();
for (int i = 0; i< getListView().getCount(); i++) {
if(getListView().isItemChecked(i)) {
recipientsIds.add(mFriends.get(i).getObjectId());
}
}
return recipientsIds;
}
}
}
whenclicking send button, the error code
1st main java.lang.NullPointerException
at treehouse.example.com.treehousechat.RecipientsActivity.onListItemClick(RecipientsActivity.java:118)
java.lang.IllegalStateException: Content view not yet created
please help me
3 Answers
Nicolas Hampton
44,725 PointsWhat is on line 118 Jihoon?
JIHOON JUNG
10,927 PointsWell, I try it again. Only this error code remained
05-15 17:11:12.824 4346-4346/treehouse.example.com.treehousechat E/AndroidRuntime﹕ FATAL EXCEPTION: main java.lang.IllegalStateException: Content view not yet created at android.support.v4.app.ListFragment.ensureList(ListFragment.java:328) at android.support.v4.app.ListFragment.getListView(ListFragment.java:222) at treehouse.example.com.treehousechat.RecipientsActivity$PlaceholderFragment.getRecipientsIds(RecipientsActivity.java:166) at treehouse.example.com.treehousechat.RecipientsActivity$PlaceholderFragment.createMessage(RecipientsActivity.java:160) at treehouse.example.com.treehousechat.RecipientsActivity.onOptionsItemSelected(RecipientsActivity.java:54) at android.app.Activity.onMenuItemSelected(Activity.java:2534) at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:353) at android.support.v7.app.AppCompatActivity.onMenuItemSelected(AppCompatActivity.java:144) at android.support.v7.internal.view.WindowCallbackWrapper.onMenuItemSelected(WindowCallbackWrapper.java:99) at android.support.v7.app.AppCompatDelegateImplV7.onMenuItemSelected(AppCompatDelegateImplV7.java:538) at android.support.v7.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:802) at android.support.v7.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:153) at android.support.v7.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:949) at android.support.v7.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:939) at android.support.v7.widget.ActionMenuView.invokeItem(ActionMenuView.java:598) at android.support.v7.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:139) at android.view.View.performClick(View.java:4084) at android.view.View$PerformClick.run(View.java:16966) at android.os.Handler.handleCallback(Handler.java:615) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4745) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) at dalvik.system.NativeStart.main(Native Method)
Nicolas Hampton
44,725 PointsWhy is this line commented out?
// getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); }
if that is commented out, it's the closing line for an overriden method, remove the // at the beginning of the line.
JIHOON JUNG
10,927 PointsMy AppTheme is <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> so, I extends ActionBarActivity using inner class with ListFragment.
Before clicking sending button, everything works well