【发布时间】:2016-09-04 09:39:32
【问题描述】:
我想使用接口将数据从活动传递到片段。 请看下面的代码sn-ps:
界面:
public interface FragmentCommunicator {
public void passData(String name);
}
主活动:
public class MainActivity extends AppCompatActivity{
FragmentCommunicator fragmentCommunicator;
private Fragment fragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b = (Button) findViewById(R.id.button);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fragment= new Fragment();
fragmentCommunicator = (FragmentCommunicator) getApplication();
fragmentCommunicator.passData("hello");
getSupportFragmentManager().beginTransaction().replace(R.id.container ,fragment).commit();
}
});
}
}
片段:
public class Fragment extends android.support.v4.app.Fragment implements FragmentCommunicator {
FragmentCommunicator communicator;
Context c;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment, null);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
this.c = context;
}
@Override
public void passData(String name) {
Toast.makeText(c, name, Toast.LENGTH_SHORT).show();
}
}
我只想在单击按钮(或其他事件)时传递一些字符串来启动片段,并且当启动片段时,它应该显示包含该字符串的 toast...
请帮忙 任何帮助将不胜感激。
【问题讨论】:
-
如何从活动传递到片段 - stackoverflow.com/a/9245510/6254066
-
@AgileNinja 我说我想使用接口而不是捆绑传递数据。
标签: android android-fragments interface