Created
January 24, 2018 17:28
-
-
Save demixdn/7018d94adce2cb54f8789a3725b15c56 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.os.Bundle; | |
import android.support.annotation.NonNull; | |
import android.support.v4.app.FragmentTransaction; | |
import android.support.v7.app.AppCompatActivity; | |
import java.util.ArrayList; | |
import java.util.List; | |
public class MainActivity extends AppCompatActivity implements Messenger { | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_main); | |
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); | |
transaction.add(R.id.activity_main, ReceiverFragment.newInstance(), ReceiverFragment.class.getCanonicalName()); | |
transaction.addToBackStack(ReceiverFragment.class.getCanonicalName()); | |
transaction.commit(); | |
} | |
private List<MessengerListener> messengerListeners = new ArrayList<>(); | |
@Override | |
public void addListener(@NonNull MessengerListener listener) { | |
messengerListeners.add(listener); | |
} | |
@Override | |
public void removeListener(@NonNull MessengerListener listener) { | |
messengerListeners.remove(listener); | |
} | |
@Override | |
public void sendMessage(@NonNull String message) { | |
for (MessengerListener listener : messengerListeners) | |
listener.acceptMessage(message); | |
getSupportFragmentManager().popBackStack(); | |
} | |
@Override | |
public void openSender() { | |
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); | |
transaction.replace(R.id.activity_main, SenderFragment.newInstance(), SenderFragment.class.getCanonicalName()); | |
transaction.addToBackStack(SenderFragment.class.getCanonicalName()); | |
transaction.commit(); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.support.annotation.NonNull; | |
public interface Messenger { | |
void addListener(@NonNull MessengerListener listener); | |
void removeListener(@NonNull MessengerListener listener); | |
void sendMessage(@NonNull String message); | |
void openSender(); //не обязательно использовать, открывайте это для только открытия нового фрагмента | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.support.annotation.NonNull; | |
public interface MessengerListener { | |
void acceptMessage(@NonNull String message); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.content.Context; | |
import android.os.Bundle; | |
import android.os.Handler; | |
import android.support.annotation.NonNull; | |
import android.support.annotation.Nullable; | |
import android.support.v4.app.Fragment; | |
import android.view.LayoutInflater; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import android.widget.TextView; | |
public class ReceiverFragment extends Fragment implements MessengerListener { | |
private Messenger mListener; | |
private TextView textView; | |
private String message; | |
public ReceiverFragment() { | |
// Required empty public constructor | |
} | |
public static ReceiverFragment newInstance() { | |
return new ReceiverFragment(); | |
} | |
@Override | |
public View onCreateView(LayoutInflater inflater, ViewGroup container, | |
Bundle savedInstanceState) { | |
// Inflate the layout for this fragment | |
return inflater.inflate(R.layout.fragment_receiver, container, false); | |
} | |
@Override | |
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { | |
super.onViewCreated(view, savedInstanceState); | |
textView = (TextView) view.findViewById(R.id.tvReceiptText); | |
if (message != null) textView.setText(message); | |
openSenderFragment(); | |
} | |
private void openSenderFragment() { | |
new Handler().postDelayed(() -> mListener.openSender(), 3000); | |
} | |
@Override | |
public void onAttach(Context context) { | |
super.onAttach(context); | |
if (context instanceof Messenger) { | |
mListener = (Messenger) context; | |
mListener.addListener(this); | |
} else { | |
throw new RuntimeException(context.toString() + " must implement Messenger"); | |
} | |
} | |
@Override | |
public void onDetach() { | |
super.onDetach(); | |
message = null; | |
mListener.removeListener(this); | |
mListener = null; | |
} | |
@Override | |
public void acceptMessage(@NonNull String message) { | |
this.message = message; | |
if (textView != null) textView.setText(message); | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import android.content.Context; | |
import android.os.Bundle; | |
import android.support.annotation.Nullable; | |
import android.support.v4.app.Fragment; | |
import android.view.LayoutInflater; | |
import android.view.View; | |
import android.view.ViewGroup; | |
import android.widget.EditText; | |
public class SenderFragment extends Fragment { | |
private Messenger mListener; | |
private EditText editTextMessage; | |
public SenderFragment() { | |
// Required empty public constructor | |
} | |
public static SenderFragment newInstance() { | |
return new SenderFragment(); | |
} | |
@Override | |
public View onCreateView(LayoutInflater inflater, ViewGroup container, | |
Bundle savedInstanceState) { | |
return inflater.inflate(R.layout.fragment_sender, container, false); | |
} | |
@Override | |
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { | |
super.onViewCreated(view, savedInstanceState); | |
editTextMessage = (EditText) view.findViewById(R.id.etMessage); | |
view.findViewById(R.id.btSend).setOnClickListener(v -> onButtonPressed()); | |
} | |
public void onButtonPressed() { | |
if (mListener != null) { | |
mListener.sendMessage(editTextMessage.getText().toString()); | |
} | |
} | |
@Override | |
public void onAttach(Context context) { | |
super.onAttach(context); | |
if (context instanceof Messenger) { | |
mListener = (Messenger) context; | |
} else { | |
throw new RuntimeException(context.toString() + " must implement Messenger"); | |
} | |
} | |
@Override | |
public void onDetach() { | |
super.onDetach(); | |
mListener = null; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment