個人喜歡復雜東西簡單化,這里就不做理論性描述,實現這方法當然很多,比如可以使用廣播,實現Activity回調再調用Fragment等,這里是直接Activity回調到Fragment
效果流程圖


2.實現流程
2.1 單例回調委托代理類,MyInstance.java
package com.cyy.test;
/**
* Created by cyy on 2016/6/20.
* 單例 代理接口回調
*/
public class MyInstance {
public static MyInstance instance;
public CallBacker callBacker; //回調代理
public static MyInstance getInstance(){
if (instance==null){
instance=new MyInstance();
}
return instance;
}
/**
* 接口設置
*/
public <T> void setCallBacker(CallBacker<T> callBacker) {
this.callBacker = callBacker;
}
/**
* 回調接口
*/
public interface CallBacker<T> {
void onCallBack(T var);
}
}
2.2 Activity1中設置單例委托類代理的回調方法
package com.cyy.test;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.Toast;
public class MyFragment extends Fragment implements View.OnClickListener{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_my, container, false);
Button button=(Button)view.findViewById(R.id.button);
button.setOnClickListener(this);
return view;
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button:
//設置回調代理方法
MyInstance.getInstance().setCallBacker(new MyInstance.CallBacker<String >() {
@Override
public void onCallBack(String var) {
Toast.makeText(mContext,"回調成功"+var,Toast.LENGTH_SHORT).show();
}
});
//點擊跳轉到到Activity2
startActivity(new Intent(getActivity(), Activity2.class));
break;
}
}
}2.3 Activity1中Fragment接口方法定義,打開Actvity2界面并設置回調方法
package com.cyy.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Activity2 extends Activity implements View.OnClickListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity2);
Button button=(Button)findViewById(R.id.button);
button.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button:
//執行回調
MyInstance.getInstance().callBacker.onCallBack("來自Activity2回調");
finish();
break;
}
}
}3.Demo代碼這里不提供了,這三個類直接復制使用就可以
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。