-1

Я не понимаю, как передавать данные между двумя фрагментами. Я пробовал:Отправьте две строки из фрагмента в фрагмент

public class Connection extends Fragment 
{ 
SendMessage sender; 
public interface SendMessage 
{ 
public void send(String one, String two); 
} 
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) 
{ 
    //my data 
} 
public void onActivityCreated(Bundle savedInstanceState) 
{ 
    super.onActivityCreated(savedInstanceState); 
    send = (SendMessage) getActivity(); 
} 

private class AlarmReceiver extends BroadcastReceiver 
{ 
    public void onReceive(final Context context, Intent intent) 
    { 
     if(message.equals("POS")) 
     { 
     sender.send(position,id); 
     } 
    } 
    } 

в первом фрагменте; в MainActivity:

public class MainActivity extends FragmentActivity implements  Connection.SendMessage 
{ 
protected void onCreate(Bundle savedInstanceState) 
{ 
    //my code 
} 

    @Override 
    public void send(String one, String two) 
    { 
    Map map = new Map(); 
    final Bundle bundle = new Bundle(); 
    bundle.putString("Position",one); 
    bundle.putString("ID:",two); 
    map.setArguments(bundle); 
    } 
} 

и фрагмент карты (он должен получить эти данные):

public class Map extends Fragment 
{ 
public View onCreateView(final LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
{ 
Bundle bundle = new Bundle(); 
bundle.getArguments(); 

if (bundle != null) 
{ 
    String pos = bundle.getString("Position"); 
    String id = bundle.getString("ID"); 
} 
    //then show this on googleMaps 
} 
} 

, но я не понимаю, почему этот код не work..could вам помочь меня? спасибо ...

ответ

0

ли этот фрагмент отправить

String cid=id.getText().toString(); 
Fragment fr=new friendfragment(); 
FragmentManager fm=getFragmentManager(); 
android.app.FragmentTransaction ft=fm.beginTransaction(); 
Bundle args = new Bundle(); 
args.putString("CID", cid); 
fr.setArguments(args); 

ft.commit(); 

Received фрагмент

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
    Bundle savedInstanceState) { 
String strtext = getArguments().getString("CID");  
return inflater.inflate(R.layout.fragment, container, false); 
    } 
+0

пардон, где content_frame? – Francesca

+0

Это похоже на метод намерения. при переходе на другой фрагмент для получения этих значений – Jai

+0

так ассоциируется файл xml с java-файлом? – Francesca

1

1) Пожалуйста, измените имя класса из Map.java к чему-либо еще. Потому что в java-карте импортируется как пакет java.util.

2)

Fragment map = new Fragment(); 
    final Bundle bundle = new Bundle(); 
    bundle.putString("Position",one); 
    bundle.putString("ID:",two); 
    map.setArguments(bundle); 
map.setArguments(arguments); 
getSupportFragmentManager().beginTransaction() 
.replace(R.id.item_detail_container, map).commit(); 

и в Recieve

Bundle bundle = getArguments(); 
    if (bundle != null) 
    { 
     String pos = bundle.getString("Position"); 
     String id = bundle.getString("ID:"); (You miss : in ID) 
    } 
+0

Я исправил его, но у меня такая же проблема. У меня есть интерфейс с вкладкой, и я хочу показать это на картах ... но он не работает ... – Francesca

0

Ну, во-первых. Ваш получающий фрагмент фактически получает доступ к пустым связям. Вы делаете это:

Bundle bundle = new Bundle(); 
bundle.getArguments(); 

Вместо:

Bundle bundle = getArguments(); 

Во-вторых, хороший способ общения между двумя фрагментами является использование интерфейса. Интерфейс связывается с активностью и активностью со вторым фрагментом. Вот учебник Google:

http://developer.android.com/training/basics/fragments/communicating.html

Кроме того, не кажется, что, как вы раздувания любой файл макета XML для карты фрагмента или даже добавляя его FragmentTransaction после того как вы его создали. Вот короткий и сладкий учебник для этого, а также:

http://android-er.blogspot.com/2011/12/programmatically-add-fragment.html

Смежные вопросы