[英]Pass data from Activity to fragment
我在使用onBackPressed()方法將數據從活動傳遞到片段時遇到一些問題
public class SingleArticle extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
onBackPressed();
break;
}
@Override
public void onBackPressed() {
Intent intent = new Intent();
setResult(RESULT_OK, intent);
finish();
}
}
在我的片段上我有這個
public class Home extends Fragment {
public View onCreateView(final LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Log.e("RETURN", "test = " );
}
}
問題是我看不到日志...您有什么想法要解決此問題? 謝謝
使用以下代碼將數據傳遞給片段
Intent intent = new Intent(Context,fragment_class_name.class);
intent.putExtra(key, Value);
startActivity(intent);
//Pass the data from Activity to Fragment
Fragment newFragment=new Fragment();
Bundle bundle = new Bundle();
bundle.putInt("item_id",1);
bundle.putString("item_data","description goes here");
newFragment.setArguments(bundle);
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.content_frame,newFragment, "newFragmentTag");
ft.commit();
//retrieve the data inside fragment
Bundle bundle = this.getArguments();
int id = bundle.getInt("item_id", 0);
String data = bundle.getString("item_data");
這是將數據從活動傳遞到片段的一種方法:
在Fragment類中創建一個靜態newInstance()方法:
public static MyFragment newInstance(String valueToPass) {
MyFragment instance = new MyFragment();
Bundle args = new Bundle();
args.putString("key", valueToPass);
instance.setArguments(args)
return instance;
}
將數據從活動/片段傳遞到MyFragment,如下所示:
MyFragment myFragment = MyFragment.newInstance("Hello World");
然后,您可以執行此操作以檢索數據(在Fragment.onCreate()之后的任何時間)
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
String passedValue = getArguments().getString("key");
// passedValue == "Hello World"
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.