【发布时间】:2013-11-18 04:19:58
【问题描述】:
我这里有个情况。
我有 FragmentActivty ,其中包含一个 Fragment 。当我单击 Fragment 中的按钮时,我将转到 Activty 。当我到达活动时我会做一些事情,这将影响我来自的Fragment 中显示的数据。因此,为了在片段中带来这种变化,我想从Activity 到Fragment 进行回调。首先我想到了实现onActivityResult。但我意识到这不是我需要的。
我的方法是错误的吗?请指导我
MyActivity extends FragmentActivity
MyActivity 持有
MyFragment extends Fragment
从这里开始
SecondActivity extends Activity
来自SecondActivity,我需要回调MyFragment。我的方法有什么问题吗??
编辑:
public class MainActivity extends FragmentActivity {
private FrameLayout frameLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
frameLayout = (FrameLayout) findViewById(R.id.framelayout);
loadFragment();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
private void loadFragment() {
FragmentManager fragmentManager = getSupportFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
MyFragment myFragment = new MyFragment();
fragmentTransaction.add(R.id.framelayout, myFragment);
fragmentTransaction.commit();
}
}
MyFragment.java
public class MyFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_view, container, false);
Button button = (Button) view.findViewById(R.id.button);
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
callActivity();
}
});
return view;
}
private void callActivity() {
Intent intent = new Intent(getActivity(), SecondActivity.class);
startActivityForResult(intent, 10);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// super.onActivityResult(requestCode, resultCode, data);
Log.e("MyFragment Inside", "Onresultttt");
if (requestCode == 10) {
if (resultCode == Activity.RESULT_OK) {
Log.e("Result code", Activity.RESULT_OK + " okkk");
}
if (resultCode == Activity.RESULT_CANCELED) {
Log.e("Result code", Activity.RESULT_CANCELED + "cancelll inside fragment");
}
}
}
}
SecondActivity.java
public class SecondActivity extends Activity {
private static final String TAG = "second activity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.secondactivity_view);
}
@Override
public void onBackPressed() {
// super.onBackPressed();
Intent intent = new Intent();
setResult(RESULT_CANCELED, intent);
Log.e(TAG, "result setted");
finish();
}
}
【问题讨论】:
-
使用接口处理回调
-
startActivityForResult来自片段 -
@Raghunandan 我首先告诉我我想到了这一点。但我意识到我错了
-
@edwin 怎么了?
-
@BaZinga 如何制作接口以将数据推送回片段。我想到了。但我对实现逻辑一无所知。如果你不介意你能详细说明吗??
标签: android android-activity android-fragments callback android-fragmentactivity