YES,這是ABS正確的。您可以通過使用Interface
,使用EventBus
像LocalBroadcastManager
,或者開始一個新的Activity
與Intent
和某種形式的flag
通過使用這個,如果你不知道你的Fragment
連接到Activity
你也可以做到這一點到其extras
捆綁或其他東西。
下面是關於使用接口的例子:
1. Add函數sendDataToActivity()插入到接口(EventListener
)。
//EventListener.java
public interface EventListener {
public void sendDataToActivity(String data);
}
2.在MainActivity
實現此功能。
// MainActivity.java
public class MainActivity extends AppCompatActivity implements EventListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
public void sendDataToActivity(String data) {
Log.i("MainActivity", "sendDataToActivity: " + data);
}
}
在MyFragment
並attach
到Activity
創建監聽。
4.最後,使用listener.sendDataToActivity("Hello World!")
調用函數。
// MyFragment.java
public class MyFragment extends Fragment {
private EventListener listener;
@Override
public void onAttach(Activity activity)
{
super.onAttach(activity);
if(activity instanceof EventListener) {
listener = (EventListener)activity;
} else {
// Throw an error!
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_my, container, false);
// Send data
listener.sendDataToActivity("Hello World!");
return view;
}
@Override
public void onDetach() {
super.onDetach();
listener = null;
}
}
希望這將有助於〜
來源
2017-05-03 16:07:41
FAT
有趣....看起來清爽多了...我會試試這個,看看我能不能把它運行起來.. – Arn