Передача данных из ACTIVITY в FRAGMENT не работает со мной - PullRequest
0 голосов
/ 24 марта 2020

Мой класс Activity (LoginActivity), у которого есть имя пользователя. Я хочу передать его фрагменту (protifilefragment), НО он не работает, в чем проблема. Пожалуйста, помогите мне

ДЕЯТЕЛЬНОСТЬ:

 boolean isExist = Mydb.checkUserExist(editusername.getText().toString(), editpassword.getText().toString());
                       if(isExist==true){
                        Intent intent = new Intent (LoginActivity.this,DressyActivity.class);

                        //PASSING DATA TO protfilefragment
                           Bundle bundle=new Bundle();
                           bundle.putString("uesername",editusername.getText().toString());
                           protfileFragment f=new protfileFragment();
                           f.setArguments(bundle);
                           //

                           startActivity(intent); }

ФРАГМЕНТ:

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {


    View view=inflater.inflate(R.layout.fragment_profile ,container,false);


    //RECIVE DATA
     welcome=(TextView)view.findViewById(R.id.textView2);
    if(this.getArguments()!=null){
        String passed_data=this.getArguments().getString("username");
        welcome.setText(passed_data); }
    //

    return view;
}

1 Ответ

0 голосов
/ 24 марта 2020

Проблема в том, что вы запускаете DressyActivity и передаете данные во фрагмент,

Поскольку profileFragment обрабатывается его родительским действием, вы должны сначала передать данные его родительскому действию. И это будет поток данных.

LoginActivity → DressyActivity → profileFragment

Итак, в LoginActivity

Intent intent = new Intent(LoginActivity.this,DressyActivity.class);
intent.putString("key","value");
startActivity(intent);

, а затем внутри DressyActivity в методе onCreate () передайте данные в profileFragment

// Receive Data From LoginActivity
String value = getIntent().getStringExtra("key");

// Then passs that data to Fragment
Bundle bundle = new Bundle();
bundle.putString("key","value");
profileFragment profilefrag = new profileFragment();
profilefrag.setArguments(bundle);
getSupportFragmentManager()
                .beginTransaction()
                .replace(R.id.main_fragment_container,profilefrag,"frag_profile")
                .commit();

Тогда вы можете получать данные в profileFragment

if(this.getArguments()!=null){
    String passed_data=this.getArguments().getString("key");
    welcome.setText(passed_data);
}
...