2015-04-01 38 views
0

我想要做的是將用戶列表轉換爲字符串,然後單擊將所選字符串傳遞給下一個活動。我在應用程序上使用的消息傳遞功能上嘗試了這一功能,並且它工作正常。現在我正在嘗試使用圖庫功能。本節應該做的是找到解析中的所有用戶,將它們轉換爲字符串並將它們顯示在列表視圖中。單擊它應該收集列表上的字符串,並在圖庫視圖活動中使用它來顯示用戶名與列表中所選圖像相同的所有圖像。如何將字符串從一個活動中的列表傳遞到另一個

ListUserActivity

列表保存在數據庫中的所有用戶名的視圖。

//display clickable a list of all users 
private void setConversationsList() { 
    currentUserId = ParseUser.getCurrentUser().getObjectId(); 
    names = new ArrayList<String>(); 

    ParseQuery<ParseUser> query = ParseUser.getQuery(); 
    query.whereNotEqualTo("objectId", currentUserId); 
    query.findInBackground(new FindCallback<ParseUser>() { 
     public void done(List<ParseUser> userList, com.parse.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, com.parse.ParseException e) { 
      if (e == null) { 
       // Intent intent = new Intent(getApplicationContext(), GridActivity.class); 
       Intent intent = new Intent(ListUsersActivity.this, GridActivity.class); 
       intent.putExtra("RECIPIENT_ID", user.get(0).getObjectId()); 
       startActivity(intent); 
      } else { 
       Toast.makeText(getApplicationContext(), 
         "Error finding that user", 
         Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
} 

GalleryActivity

我已經盡力了RECIPIENT_ID轉換成稱爲一個字符串變量recipientId和行query.whereEqualTo("username", recipientId);添加它,但它使創建一條消息,告訴我它是NULL 。

@Override 
    protected Void doInBackground(Void... params) { 
     // Create the array 

     Intent intent = getIntent(); 
     recipientId = intent.getStringExtra("RECIPIENT_ID"); 
     currentUserId = ParseUser.getCurrentUser().getObjectId(); 


     phonearraylist = new ArrayList<PhoneList>(); 
     try { 

      ParseQuery<ParseObject> query = new ParseQuery<ParseObject>("ImageUpload"); 


      usernametxt = usernameimgshow.getText().toString(); 
      //query.whereEqualTo("username", userstr); 
      query.whereEqualTo("username", recipientId); 
      query.orderByAscending("createdAt"); 
      ob = query.find(); 
      for (ParseObject country : ob) { 
       ParseFile image = (ParseFile) country.get("ImageFile"); 
       PhoneList map = new PhoneList(); 
       map.setPhone(image.getUrl()); 
       phonearraylist.add(map); 
      } 
     } catch (ParseException e) { 
      Log.e("Error", e.getMessage()); 
      e.printStackTrace(); 
     } 
     return null; 
    } 

回答

0

我自己發現了一個簡單的解決方案。我正在使用Extra意圖稍微錯誤,希望這將有助於未來的人。

第一個活動

把字符串轉換成一個額外的選擇要發送到的活動。

Intent i = new Intent(firstActivity.this, secondActivity.class); 
    final EditText usernameimgshow = (EditText) findViewById(R.id.usernameimgshow); 
    String userMessage = usernameimgshow.getText().toString(); 
    i.putExtra("appleMessage", userMessage); 
    startActivity(i); 

次活動

這是你上的第二個活動的字符串。將該變量聲明爲一個字符串,並且您可以在該活動的任何位置使用它。

Bundle appleData = getIntent().getExtras(); 
    if(appleData==null) { 
     return; 
    } 
    //String appleMessage = appleData.getString("appleMessage"); 
    appleMessage = appleData.getString("appleMessage"); 
0

如果第二個活動的啓動模式是singleInstance或singleTop,當你把你的意圖,然後你想要的意圖將在onNewIntent到達它已經創建。如果是這種情況,那麼當前的getIntent只會在首次創建活動時返回意圖。

相關問題