簡體   English   中英

將數據從活動傳遞到片段

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM