如何将数据从 Android Activity 发送到 Fragment [重复]

Posted

技术标签:

【中文标题】如何将数据从 Android Activity 发送到 Fragment [重复]【英文标题】:how to send data from Android activity to Fragment [duplicate] 【发布时间】:2021-02-07 18:27:01 【问题描述】:

我想将数据从 LoginActivity 发送到 FragmentIndividual。 想了两天了,还是没解决。 我不知道为什么会发生 NullPointer。 如果您能将代码附在一起,我将不胜感激。


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

    // Initialize Firebase Auth
    mAuth = FirebaseAuth.getInstance();

    FragmentManager fragmentManager = getSupportFragmentManager();
    final FragmentTransaction t = fragmentManager.beginTransaction();
    final FragmentIndividual fragmentIndividual = new FragmentIndividual();
    login_btn = (Button)findViewById(R.id.signIn);
    e1 = (EditText)findViewById(R.id.idText);
    login_btn.setOnClickListener(new View.OnClickListener()
        @Override
        public void onClick(View v) 
            Bundle b2 = new Bundle();
            b2.putString("email", e1.getText().toString());
            fragmentIndividual.setArguments(b2);
            t.add(R.id.fram1234, fragmentIndividual);
            t.commit();
        
    );

    TextView signup = (TextView) findViewById(R.id.signUp);
    signup.setOnClickListener(new TextView.OnClickListener() 
        @Override
        public void onClick(View v) 
            Intent signupIntent = new Intent(getApplicationContext(), SignupActivity.class);
            startActivity(signupIntent);
        
    );

    findViewById(R.id.signIn).setOnClickListener(onClickLisener);
    findViewById(R.id.pwResetBtn).setOnClickListener(onClickLisener);


public class FragmentIndividual extends Fragment 
TextView t1;

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) 
    View v = inflater.inflate(R.layout.fragment_individual, container, false);
    t1 = (TextView)v.findViewById(R.id.emailTv);
    Bundle b3 = getArguments();
    String email = b3.getString("email");
    t1.setText(email);

    return inflater.inflate(R.layout.fragment_individual, container, false);


【问题讨论】:

这能回答你的问题吗? Send data from activity to fragment in android 你应该在onCreateView中返回已经充气的v,而不是再次充气。 您可以尝试将这一行 final FragmentTransaction t = fragmentManager.beginTransaction(); 移动到登录按钮的 onClick() 方法中。 请不要发布错误图片,将错误发布为文本。另外,你确定这是你创建这个 Fragment 的唯一地方吗? 【参考方案1】:

在下面的片段示例中创建方法构造函数:

public class ExampleFragment extends Fragment 

String  currency;
List<model> list ;
public ExampleFragment(List<model> list , String currency) 
    this.list = list;
    this.currency=currency;


【讨论】:

这是一个糟糕的建议。这只会导致更多的崩溃,因为Fragments 必须有无参数的构造函数。

以上是关于如何将数据从 Android Activity 发送到 Fragment [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将数据从 Android Activity 发送到 Fragment [重复]

Android如何成功截击请求,如何将数据从Activity传递到Fragment?

Kotlin 上的 Android:如何将数据从 Activity 传递到事件监听器?

android Fragment与Activity交互,互相发数据(附图具体解释)

如何将数据从Activity返回到Fragment

Java Android - 将数据从活动发送到片段