0
我正在做一些事情,需要將選定項目的ID發送到我的一個佈局中包含的片段。我知道片段的基本內容,但我不知道如何從Activity到Fragment進行正確的通信。那麼這裏是我的代碼現在:將意圖字符串從我的FragmentActivity傳遞到我的片段
public class GroupActivity extends FragmentActivity {
Button information, back;
TextView group_name;
String name, group_description, group_administrator,image_id;
public static String group_id;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.group_screen);
Intent intent = getIntent();
name = intent.getStringExtra("group_name");
group_description = intent.getStringExtra("group_description");
group_administrator = intent.getStringExtra("group_administrator");
image_id = intent.getStringExtra("image_id");
group_id = intent.getStringExtra("group_id");
information = (Button)findViewById(R.id.btn_information);
back = (Button)findViewById(R.id.btn_back);
group_name = (TextView)findViewById(R.id.txt_group_name);
Toast.makeText(getBaseContext(),"The group id "+group_id,Toast.LENGTH_SHORT).show();
group_name.setText(name);
information.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(GroupActivity.this, GroupInformationActivity.class);
intent.putExtra("group_name",name);
intent.putExtra("group_description",group_description);
intent.putExtra("group_administrator",group_administrator);
intent.putExtra("image_id",image_id);
startActivity(intent);
GroupActivity.this.overridePendingTransition(R.anim.in_from_left, R.anim.out_to_right);
}
});
back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onBackPressed();
}
});
}
private void showCreateNewTopicDialog() {
FragmentManager fm = getSupportFragmentManager();
DialogNewTopic newTopic = new DialogNewTopic();
newTopic.show(fm, "new_topic");
}
@Override
public void onBackPressed(){
super.onBackPressed();
overridePendingTransition(R.anim.in_from_right,R.anim.out_to_left);
}
}
和碎片
public class GroupConversationsFragment extends ListFragment {
final ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>();
String[][] conversation_header = {{"0","Topic 1","10/03/2013 10:21:am","2","0"},{"0","Topic 2","10/04/2013 1:29:pm","5","0"}};
String group_id;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
setConversations();
return inflater.inflate(R.layout.conversations_list_view, container, false);
}
public void onListItemClick(ListView l, View v, int position, long id) {
Intent intent = new Intent(getActivity(), ConversationActivity.class);
startActivity(intent);
getActivity().overridePendingTransition(R.anim.in_from_left, R.anim.out_to_right);
}
private void setConversations(){
list.clear();
SimpleAdapter adapter = new SimpleAdapter(
getActivity(),
list,
R.layout.custom_list_main_conversations,
new String[] {"message","date", "reply_count", "stars_count"},
new int[] {R.id.txt_conversation_message,R.id.txt_topic_date, R.id.txt_no_of_reply, R.id.txt_no_of_stars}
);
for(int ctr=0; ctr < conversation_header.length; ctr++){
Log.v("The header group id", conversation_header[ctr][0]);
if(conversation_header[ctr][0].equals(group_id)){
HashMap<String,String> item_list = new HashMap<String,String>();
item_list.put("message", conversation_header[ctr][1]);
item_list.put("date", conversation_header[ctr][2]);
item_list.put("reply_count", conversation_header[ctr][3]);
item_list.put("stars_count", conversation_header[ctr][4]);
list.add(item_list);
}
}
setListAdapter(adapter);
}
}
,並進一步解釋什麼,我在這裏做的是,該活動從活動得到stringExtra之前,然後把它放在一個變量。現在這個活動有自己的佈局,其中包含Listfragment,因爲我使用的是自定義列表。然後我需要將group_id傳遞給片段以基於group_id顯示適當的主題。我到目前爲止所嘗試的是從Activity使用靜態String變量並在我的Fragment上訪問它,但我認爲在Fragment生命週期中沒有正確設置id的問題。希望有人能夠直接回答我如何才能做到這一點。
嗨@Niveditha,我嘗試了包添加字符串的,但我得到的字符串的一部分空指針異常val = getArguments()。getString(「key」); – KaHeL
嘗試這樣做; Bundle bundle = new Bundle(); GroupConversationsFragment fragmentObject = new GroupConversationsFragment(); bundle.putString(「key」,「value - from the activity」); fragmentObject.setArguments(bundle);看看你如何更換片段 – Niveditha