【问题标题】:pass string from activity to fragment [duplicate]将字符串从活动传递到片段[重复]
【发布时间】:2017-12-08 14:32:19
【问题描述】:

我的问题是将字符串从活动传递到片段。我研究了一整天,我的问题没有解决。

活动:

if(email.matches(users.user1)&&password.matches(users.pass1)){

        Intent intent = new Intent(LoginActivity.this,MainActivity.class);

        Bundle bundle = new Bundle();
        bundle.putString("user", users.name);
        ProfileFragment fragobj = new ProfileFragment();
        fragobj.setArguments(bundle);


        startActivity(intent);

    }

片段:

public class ProfileFragment extends Fragment {

public static ProfileFragment newInstance() {
    return new ProfileFragment();


}

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

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

    String user = getArguments().getString("user");
    TextView textView = v.findViewById(R.id.namef1);
    textView.setText(user);


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

}


}

主活动

public class MainActivity extends Activity {



private BottomNavigationView mBottomNavigationView;

private Toolbar supportActionBar;


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

    setupBottomNavigation();

    if (savedInstanceState == null) {

        loadHomeFragment();
    }


}


private void setupBottomNavigation() {

    mBottomNavigationView =findViewById(R.id.bottom_navigation);

    mBottomNavigationView.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {

            switch (item.getItemId()) {
                case R.id.action_home:
                    loadHomeFragment();
                    return true;
                case R.id.action_profile:
                    loadProfileFragment();
                    return true;
                case R.id.action_settings:
                    loadSettingsFragment();
                    return true;
            }
            return false;
        }
    });
}


private void loadHomeFragment() {

    HomeFragment fragment = HomeFragment.newInstance();
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.replace(R.id.fragment_frame, fragment);
    ft.commit();
}


private void loadProfileFragment() {

    ProfileFragment fragment = ProfileFragment.newInstance();
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.replace(R.id.fragment_frame, fragment);
    ft.commit();
}

private void loadSettingsFragment() {

    SettingsFragment fragment = SettingsFragment.newInstance();
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    ft.replace(R.id.fragment_frame, fragment);
    ft.commit();
}

public void setSupportActionBar(Toolbar supportActionBar) {
    this.supportActionBar=supportActionBar;
}
}

如代码中所示,用户已登录,并且他的其中一个数据显示在配置文件片段中。我想在 profilefragment 中将此字符串显示为 Textview 。 有人有想法吗?

【问题讨论】:

    标签: android fragment parameter-passing


    【解决方案1】:

    将下面的部分代码移动到您将 ProfileFragment 添加到 Activity 的位置。

    Bundle bundle = new Bundle();
        bundle.putString("user", users.name);
        ProfileFragment fragobj = new ProfileFragment();
        fragobj.setArguments(bundle);
    

    【讨论】:

    • 你写的这段代码不在mainActivity中(包括片段添加)
    • 你也可以添加你的 Mainactivity 代码
    • 已添加 .到代码
    • 您应该将用户详细信息从 Login Activity 传递给 MainActivity,然后在 MainActivity 中使用上述代码将其传递给 ProfileFragment
    • 你能解释一下我的主要活动我可以把它放在哪里吗?什么方法?例如,我有意图地将细节传递给主要活动,主要活动中的哪个方法可以将其传递给片段?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-24
    • 2015-12-04
    • 2021-07-29
    • 1970-01-01
    • 2013-02-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多