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!
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

Fuseini Isaac
Courses Plus Student 2,225 PointsTroubleshoot InboxFragment Code
i am having an error with one of the brackets on line 138.. i will mark it with ******
package com.instantmedia.swerve;
import java.util.ArrayList;
import java.util.List;
import android.app.AlertDialog;
import android.app.Notification.Builder;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.Toast;
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 com.parse.SaveCallback;
import com.parse.ParseFile;
public class InboxFragment extends ListFragment{
protected List<ParseObject> mMessages;
protected List<ParseUser> mUsers;
protected List<ParseConstants> messageType;
public String senderId;
public String senderName;
protected ParseRelation<ParseUser> mFriendsRelation;
protected ParseUser mCurrentUser;
protected Uri mMediaUri;
protected ArrayList<String> recipientId = new ArrayList<String>();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_inbox,
container, false);
return rootView;
}
@Override
public void onResume() {
super.onResume();
getActivity().setProgressBarIndeterminateVisibility(true);
ParseQuery<ParseObject> query = new ParseQuery<ParseObject>(ParseConstants.CLASS_MESSAGES);
query.whereEqualTo(ParseConstants.KEY_RECIPIENT_IDS, ParseUser.getCurrentUser().getObjectId());
query.addDescendingOrder(ParseConstants.KEY_CREATED_AT);
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> messages, ParseException e) {
getActivity().setProgressBarIndeterminateVisibility(false);
if (e == null) {
//we found messages!
mMessages = messages;
String[] usernames = new String[mMessages.size()];
int i = 0;
for (ParseObject message : mMessages) {
usernames[i] = message.getString(ParseConstants.KEY_SENDER_NAME);
i++;
}
if (getListView().getAdapter() == null) {
MessageAdapter adapter = new MessageAdapter(
getListView().getContext(),
mMessages);
setListAdapter(adapter);
}
else {
//refill the adapter
((MessageAdapter)getListView().getAdapter()).refill(mMessages);
}
}
}
});
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
ParseObject message = mMessages.get(position);
String messageType = message.getString(ParseConstants.KEY_FILE_TYPE);
senderName = message.getString(ParseConstants.KEY_SENDER_NAME);
senderId = message.getString(ParseConstants.KEY_SENDER_ID);
String displayMessage = message.getString(ParseConstants.KEY_MESSAGE);
ParseFile file = message.getParseFile(ParseConstants.KEY_FILE);
if (messageType.equals(ParseConstants.TYPE_IMAGE)) {
//view the image
Uri fileUri = Uri.parse(file.getUrl());
Intent intent = new Intent(getActivity(), ViewImageActivity.class);
intent.setData(fileUri);
startActivity(intent);
}else if (messageType.equals(ParseConstants.TYPE_VIDEO)){
Uri fileUri = Uri.parse(file.getUrl());
//view the video
Intent intent = new Intent(Intent.ACTION_VIEW, fileUri);
intent.setDataAndType(fileUri, "video/*");
startActivity(intent);
}else if (messageType.equals(ParseConstants.TYPE_TEXT)){
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Message from: " + senderName + ".");
builder.setMessage(displayMessage);
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
if (messageType.equals(ParseConstants.TYPE_FRIEND_REQUEST)){
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Friend Request from " + senderName + ".");
builder.setMessage(displayMessage);
***************************************************************************
builder.setPositiveButton("Accept", new DialogInterface.OnClickListener() {
***************************************************************************
public void onClick(DialogInterface dialog, int whichButton) {
//Accept request
//Add senders id to friends list
mCurrentUser = ParseUser.getCurrentUser();
mFriendsRelation = mCurrentUser.getRelation(ParseConstants.KEY_FRIENDS_RELATION);
getActivity().setProgressBarIndeterminate(true);
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("objectId", senderId);
query.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> users, ParseException e) {
getActivity().setProgressBarIndeterminate(false);
if (e == null){
mFriendsRelation.remove(users.get(0));
mCurrentUser.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e != null) {
Log.e("Inbox Fragment", e.getMessage());
}
}
});
}else {
Log.e("Inbox Fragment", e.getMessage());
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(e.getMessage())
.setTitle(R.string.error_title)
.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
//send accepted message
String acceptedMessage = mCurrentUser.getUsername() + " has accepted your friend request.";
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());
recipientId.add(senderId);
message.put(ParseConstants.KEY_RECIPIENT_IDS, recipientId);
message.put(ParseConstants.KEY_MESSAGE, acceptedMessage);
message.put(ParseConstants.KEY_FILE_TYPE, ParseConstants.TYPE_FRIEND_ACCEPT);
message.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e ==null){
//success
//Tell the user that the new friend was added.
Toast.makeText(getActivity(), senderName + " is now your friend.", Toast.LENGTH_LONG).show();
}else{
String errorMessage = e.getMessage();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage("Error accepting friend request." + errorMessage);
builder.setTitle(R.string.error_selecting_file_title);
builder.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setNegativeButton("Deny", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//Refuse request
Toast.makeText(getActivity(), "Request Denied.", Toast.LENGTH_LONG).show();
//Send denied message.
mCurrentUser = ParseUser.getCurrentUser();
String acceptedMessage = mCurrentUser.getUsername() + " has denied your friend request.";
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());
recipientId.add(senderId);
message.put(ParseConstants.KEY_RECIPIENT_IDS, recipientId);
message.put(ParseConstants.KEY_MESSAGE, acceptedMessage);
message.put(ParseConstants.KEY_FILE_TYPE, ParseConstants.TYPE_FRIEND_DENY);
message.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e ==null){
//success
//Tell the user that the new friend was added.
Toast.makeText(getActivity(), "Request denied.", Toast.LENGTH_LONG).show();
}else{
String errorMessage = e.getMessage();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage("Error denying friend request." + errorMessage);
builder.setTitle(R.string.error_selecting_file_title);
builder.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
}
});
if (messageType.equals(ParseConstants.TYPE_FRIEND_ACCEPT)){
//Display dialog showing that friend has accepted.
AlertDialog.Builder builder1 = new AlertDialog.Builder(getActivity());
builder1.setMessage(senderName + " is now your friend.");
builder1.setTitle("Friend Request.");
builder1.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog1 = builder1.create();
dialog1.show();
//Add new friends name to relation list
mCurrentUser = ParseUser.getCurrentUser();
mFriendsRelation = mCurrentUser.getRelation(ParseConstants.KEY_FRIENDS_RELATION);
getActivity().setProgressBarIndeterminate(true);
ParseQuery<ParseUser> query1 = ParseUser.getQuery();
query1.whereEqualTo("objectId", senderId);
query1.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> users, ParseException e) {
getActivity().setProgressBarIndeterminate(false);
if (e == null){
mFriendsRelation.add(users.get(0));
mCurrentUser.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e != null) {
Log.e("Inbox Fragment", e.getMessage());
}
}
});
}else {
Log.e("Inbox Fragment", e.getMessage());
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(e.getMessage())
.setTitle(R.string.error_title)
.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
} else if (messageType.equals(ParseConstants.TYPE_FRIEND_DENY)){
//Display dialog showing that friend has denied.
AlertDialog.Builder builder1 = new AlertDialog.Builder(getActivity());
builder1.setMessage(senderName + " has denied the friend request.");
builder1.setTitle("Friend Request.");
builder1.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog1 = builder1.create();
dialog1.show();
} else if (messageType.equals(ParseConstants.TYPE_FRIEND_REMOVE)){
//Display dialog showing that a friend has requested removal.
AlertDialog.Builder builder1 = new AlertDialog.Builder(getActivity());
builder1.setMessage(senderName + " has been removed from your friends list.");
builder1.setTitle("Friend Update.");
builder1.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog1 = builder1.create();
dialog1.show();
//Remove friends name from relation list
mCurrentUser = ParseUser.getCurrentUser();
mFriendsRelation = mCurrentUser.getRelation(ParseConstants.KEY_FRIENDS_RELATION);
getActivity().setProgressBarIndeterminate(true);
ParseQuery<ParseUser> query1 = ParseUser.getQuery();
query1.whereEqualTo("objectId", senderId);
query1.findInBackground(new FindCallback<ParseUser>() {
@Override
public void done(List<ParseUser> users, ParseException e) {
getActivity().setProgressBarIndeterminate(false);
if (e == null){
mFriendsRelation.remove(users.get(0));
mCurrentUser.saveInBackground(new SaveCallback() {
@Override
public void done(ParseException e) {
if (e != null) {
Log.e("Inbox Fragment", e.getMessage());
}
}
});
}else {
Log.e("Inbox Fragment", e.getMessage());
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setMessage(e.getMessage())
.setTitle(R.string.error_title)
.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.show();
}
}
});
}
//delete the message
List<String> ids = message.getList(ParseConstants.KEY_RECIPIENT_IDS);
if(ids.size() == 1) {
//last recipient, delete the message
message.deleteInBackground();
}else {
//remove recipients name
ids.remove(ParseUser.getCurrentUser().getObjectId());
ArrayList<String> idsToRemove = new ArrayList<String>();
idsToRemove.add(ParseUser.getCurrentUser().getObjectId());
message.removeAll(ParseConstants.KEY_RECIPIENT_IDS, idsToRemove);
message.saveInBackground();
}
}}
3 Answers

Ben Jakuben
Treehouse TeacherI tried to look at this code in Eclipse but there's too much that I don't understand. There is a lot going on, so it's easy to get lost without consistent indenting and brackets.
Let's try this: copy and paste your code into a "code beautifier": http://prettyprinter.de/index.php
Then take the output from there and paste it back into Eclipse. That will at least help get things indented consistently, which may help you track down the error.

Fuseini Isaac
Courses Plus Student 2,225 PointsTried it but still getting the same error..its just that "{" thats showing as a error

Fuseini Isaac
Courses Plus Student 2,225 PointsTried it but still getting the same error..its just that "{" thats showing as a error