Java 无法解析为变量-Parse.com
我正在尝试从parse中检索信息。特别是,我添加了一个条件,其中只返回选择了相同活动的用户列表。在执行此操作时,我意外地收到以下错误:Java 无法解析为变量-Parse.com,java,android,android-layout,android-activity,parse-platform,Java,Android,Android Layout,Android Activity,Parse Platform,我正在尝试从parse中检索信息。特别是,我添加了一个条件,其中只返回选择了相同活动的用户列表。在执行此操作时,我意外地收到以下错误: userActivitySelectionName cannot be resolved to a variable 它基本上会看到哪些用户选择了特定的活动名称并返回我随机添加的这个变量,因为我想检索除currentuser之外选择了该活动的usersname的列表。我不想特别指出用户名,因为列表一直在变化,所以我想使用一个通用变量名,比如userActivi
userActivitySelectionName cannot be resolved to a variable
它基本上会看到哪些用户选择了特定的活动名称并返回我随机添加的这个变量,因为我想检索除currentuser之外选择了该活动的usersname的列表。我不想特别指出用户名,因为列表一直在变化,所以我想使用一个通用变量名,比如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();
}
}
});
}
}
公共类匹配活动扩展活动{
私有字符串currentUserId;
私有ArrayAdapter名称ArrayAdapter;
私有数组列表名称;
私有列表视图用户列表视图;
私人按钮注销按钮;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.matching);
logoutButton=(按钮)findViewById(R.id.logoutButton);
logoutButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
ParseUser.logOut();
Intent Intent=新的Intent(getApplicationContext(),LoginActivity.class);
星触觉(意向);
}
});
setConversationsList();
}
私有void setConversationsList(){
currentUserId=ParseUser.getCurrentUser().getObjectId();
名称=新的ArrayList();
ParseQuery=ParseUser.getQuery();
whereNotEqualTo(“objectId”,currentUserId);
query.whereEqualTo(“ActivityName”,userActivitySelectionName);
findInBackground(新的FindCallback(){
public void done(List userList,parsee异常){
如果(e==null){
对于(int i=0;i您没有声明此变量userActivitySelectionName
。您需要声明此变量并分配要存储的数据类型
说
正如@Suresh所说,在对其进行任何类似的操作之前,需要检查null
值
if(userActivitySelectionName!=null)
query.whereEqualTo("ActivityName",userActivitySelectionName);
否则,当调用方法或访问null
值的属性时,将获得NullPointerException
如果值为null
,则可以设置有意义的值,而不是null
说空字符串“”
对于字符串变量您没有名为userActivitySelectionName
的变量。您需要创建该变量。能否请您也对NPE发出警告?感谢您的及时响应。问题是,当我将其初始化为null时,条件似乎不适用,因此整个列表都会返回,无论这两个活动Activity是否匹配。@user3827788我想了解为什么您有变量userActivitySelectionName
,以及在何处初始化它。当它的值为null时,执行所需操作是合适的。它将完全基于您的上下文。我同意变量名useractiveselectname不是必需的。首先我需要这个问题很简单,但在activityname列中生成与相同活动名称相等的用户列表时,它似乎比我想象的要复杂。
if(userActivitySelectionName!=null)
query.whereEqualTo("ActivityName",userActivitySelectionName);