Как передать пакет во фрагмент, используя getSupportFragmentManager? - PullRequest
0 голосов
/ 09 февраля 2019

У меня есть действие, которое получает пакет от другого действия.Пакет представляет собой простую строку URL.Операция получения запускает фрагмент, используя getSupportFragmentManager, как показано ниже, и это работает как ожидалось.

Я бы хотел передать строку url фрагменту, но не могу найти способ сделать это.Все примеры, которые я видел, используют разные шаблоны для запуска фрагмента.Любые предложения приветствуются!

См. Мой комментарий о том, почему это не совсем дубликат другого вопроса.

import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.widget.Toast;
import androidx.appcompat.widget.Toolbar;

public class GalleryActivity extends AppCompatActivity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_gallery);

            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            getSupportActionBar().setBackgroundDrawable(
                    new ColorDrawable(Color.parseColor("#273134")));

            //Get the URL string from the calling activity

            String url = super.getIntent().getExtras().getString("urlString");

            Toast.makeText(this, "URL String is: " + url, Toast.LENGTH_LONG).show();

/*
Here is a new bundle. How do we get this passed to the new fragment?
            Bundle bundle = new Bundle();
            bundle.putString("url", url);
*/

            getSupportFragmentManager()
                    .beginTransaction()
                    .add(R.id.content, RecyclerViewFragment.newInstance())
                    .commit();
        }
    }

1 Ответ

0 голосов
/ 09 февраля 2019

вы можете установить связку во фрагменте, используя setArguments на экземпляре фрагмента.Вы можете найти больше информации в документах .для вашего примера:

Fragment fragment = RecyclerViewFragment.newInstance();

Bundle bundle = new Bundle();
bundle.putString("url", url);

fragment.setArguments(bundle);

getSupportFragmentManager()
        .beginTransaction()
        .add(R.id.content, fragment)
        .commit();

и в вашем onCreate или onCreateView во фрагменте используйте:

String url =  getArguments().getString("url")

Ответ на вопрос в stackoverflow: setArguments - getArguments

...