我正在尝试从解析中检索信息。特别是,我添加了一个条件,它只会返回选择相同 Activity 的用户列表。这样做时,我意外地收到以下错误:
userActivitySelectionName cannot be resolved to a variable
它本质上会看到哪些用户选择了该特定 Activity 名称并返回我随机添加了此变量,因为我想检索选择该 Activity 的用户名列表(当前用户除外)。我不想具体指出用户名,因为列表一直在变化,因此考虑使用通用变量名称,例如 userActivitySelectionName
下面是完整的代码
public class MatchingActivity extends Activity {
private String currentUserId;
private ArrayAdapter<String> namesArrayAdapter;
private ArrayList<String> names;
private ListView usersListView;
private Button logoutButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.matching);
logoutButton = (Button) findViewById(R.id.logoutButton);
logoutButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
ParseUser.logOut();
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);
startActivity(intent);
}
});
setConversationsList();
}
private void setConversationsList() {
currentUserId = ParseUser.getCurrentUser().getObjectId();
names = new ArrayList<String>();
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereNotEqualTo("objectId", currentUserId);
query.whereEqualTo("ActivityName",userActivitySelectionName);
query.findInBackground(new FindCallback<ParseUser>() {
public void done(List<ParseUser> userList, ParseException e) {
if (e == null) {
for (int i=0; i<userList.size(); i++) {
names.add(userList.get(i).getUsername().toString());
}
usersListView = (ListView)findViewById(R.id.usersListView);
namesArrayAdapter =
new ArrayAdapter<String>(getApplicationContext(),
R.layout.user_list_item, names);
usersListView.setAdapter(namesArrayAdapter);
usersListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int i, long l) {
openConversation(names, i);
}
});
} else {
Toast.makeText(getApplicationContext(),
"Error loading user list",
Toast.LENGTH_LONG).show();
}
}
});
}
public void openConversation(ArrayList<String> names, int pos) {
ParseQuery<ParseUser> query = ParseUser.getQuery();
query.whereEqualTo("username", names.get(pos));
query.findInBackground(new FindCallback<ParseUser>() {
public void done(List<ParseUser> user, ParseException e) {
if (e == null) {
Intent intent = new Intent(getApplicationContext(), MessagingActivity.class);
intent.putExtra("RECIPIENT_ID", user.get(0).getObjectId());
startActivity(intent);
} else {
Toast.makeText(getApplicationContext(),
"Error finding that user",
Toast.LENGTH_SHORT).show();
}
}
});
}
}
提前致谢。
最佳答案
您错过了声明此变量userActivitySelectionName
。您需要声明此变量并分配要存储的数据类型。
说
String userActivitySelectionName = null;
正如 @Suresh 所说,在对其进行任何操作之前,您需要检查 null
值,例如
if(userActivitySelectionName!=null)
query.whereEqualTo("ActivityName",userActivitySelectionName);
否则,当您调用方法或访问 null
值的属性时,您将收到 NullPointerException
。
如果值为null
,您可以为字符串变量设置一个有意义的值,而不是null
(例如空字符串""
)
关于java - 无法解析为变量 - Parse.com,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25237200/