Android “从活动传递数据”;如“登录页面”;标记碎片

Android “从活动传递数据”;如“登录页面”;标记碎片,android,Android,我有项目内容登录页面(它有2个编辑文本和“登录”按钮),当我按下“登录按钮”时,它将转到另一个活动,即“选项卡式活动”,它有2个点击 现在有谁能帮我将数据从“登录活动,编辑文本”传递到“每个选项卡”?。 public class HomePage extends AppCompatActivity { String name , pw , email ; @Override protected void onCreate(Bundle savedInstanceState

我有项目内容登录页面(它有2个编辑文本和“登录”按钮),当我按下“登录按钮”时,它将转到另一个活动,即“选项卡式活动”,它有2个点击

现在有谁能帮我将数据从“登录活动,编辑文本”传递到“每个选项卡”?。

public class HomePage extends AppCompatActivity {
    String name , pw , email ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home_page);
        SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(this, 
        getSupportFragmentManager());
        ViewPager viewPager = findViewById(R.id.view_pager);
        viewPager.setAdapter(sectionsPagerAdapter);
        TabLayout tabs = findViewById(R.id.tabs);
        tabs.setupWithViewPager(viewPager);



        name = (getIntent().getStringExtra("NAME"));
        pw =  getIntent().getStringExtra("PW") ;
        email =  getIntent().getStringExtra("EMAIL") ;

        Fragment frag = new frag2();
        Bundle bun = new Bundle();
        bun.putString("NAME" , name);
        frag.setArguments(bun);

    }
}
我在SelectionPagerAdapter.java中的代码

public class SectionsPagerAdapter extends FragmentPagerAdapter {

    @StringRes
    private static final int[] TAB_TITLES = new int[]{R.string.tab_text_1, R.string.tab_text_2};
    private final Context mContext;

    public SectionsPagerAdapter(Context context, FragmentManager fm) {
        super(fm);
        mContext = context;
    }

    @Override
    public Fragment getItem(int position ) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
        //return PlaceholderFragment.newInstance(position + 1);
        Fragment fragment = null;
        switch (position)
        {
            case 0:
                fragment = new frag2();
                Bundle bun = new Bundle();
                bun.putString("NAME" , "Moaaz");
                fragment.setArguments(bun);
                break;
            case 1:
                fragment = new frag3();
                Bundle bun1 = new Bundle();
                bun1.putString("NAME" , "Moaaz2");
                fragment.setArguments(bun1);
                break;
        }
        return fragment;

    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return mContext.getResources().getString(TAB_TITLES[position]);
    }

    @Override
    public int getCount() {
        // Show 2 total pages.
        return 2;
    }
}
public class frag2 extends Fragment {


    public frag2() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view= inflater.inflate(R.layout.fragment_frag2, container, false);
        TextView tes=(TextView) view.findViewById(R.id.testV1);
        String strtext = getArguments().getString("NAME");

        tes.setText("Name :" + strtext );
        return  view;
    }

}
public class register extends AppCompatActivity {
     private Button singin ;

      EditText name , password , email ;

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

        name = findViewById(R.id.registerUsername);
        password = findViewById(R.id.registerPw);
        email = findViewById(R.id.registerEmail);

        singin = findViewById(R.id.singinbtn);
        singin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                goHomePage();
            }
        });
    }

    public void goHomePage(){
        String nameValue = name.getText().toString();
        String pwValue = password.getText().toString();
        String emailValue = email.getText().toString();

      Intent intent = new Intent(register.this , HomePage.class);
        intent.putExtra("NAME" , nameValue);
        intent.putExtra("PW" , pwValue);
        intent.putExtra("EMAIL" , emailValue);



        startActivity(intent);
    }

}
我在frag2.java中的代码

public class SectionsPagerAdapter extends FragmentPagerAdapter {

    @StringRes
    private static final int[] TAB_TITLES = new int[]{R.string.tab_text_1, R.string.tab_text_2};
    private final Context mContext;

    public SectionsPagerAdapter(Context context, FragmentManager fm) {
        super(fm);
        mContext = context;
    }

    @Override
    public Fragment getItem(int position ) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
        //return PlaceholderFragment.newInstance(position + 1);
        Fragment fragment = null;
        switch (position)
        {
            case 0:
                fragment = new frag2();
                Bundle bun = new Bundle();
                bun.putString("NAME" , "Moaaz");
                fragment.setArguments(bun);
                break;
            case 1:
                fragment = new frag3();
                Bundle bun1 = new Bundle();
                bun1.putString("NAME" , "Moaaz2");
                fragment.setArguments(bun1);
                break;
        }
        return fragment;

    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return mContext.getResources().getString(TAB_TITLES[position]);
    }

    @Override
    public int getCount() {
        // Show 2 total pages.
        return 2;
    }
}
public class frag2 extends Fragment {


    public frag2() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view= inflater.inflate(R.layout.fragment_frag2, container, false);
        TextView tes=(TextView) view.findViewById(R.id.testV1);
        String strtext = getArguments().getString("NAME");

        tes.setText("Name :" + strtext );
        return  view;
    }

}
public class register extends AppCompatActivity {
     private Button singin ;

      EditText name , password , email ;

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

        name = findViewById(R.id.registerUsername);
        password = findViewById(R.id.registerPw);
        email = findViewById(R.id.registerEmail);

        singin = findViewById(R.id.singinbtn);
        singin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                goHomePage();
            }
        });
    }

    public void goHomePage(){
        String nameValue = name.getText().toString();
        String pwValue = password.getText().toString();
        String emailValue = email.getText().toString();

      Intent intent = new Intent(register.this , HomePage.class);
        intent.putExtra("NAME" , nameValue);
        intent.putExtra("PW" , pwValue);
        intent.putExtra("EMAIL" , emailValue);



        startActivity(intent);
    }

}
这是登录活动

public class SectionsPagerAdapter extends FragmentPagerAdapter {

    @StringRes
    private static final int[] TAB_TITLES = new int[]{R.string.tab_text_1, R.string.tab_text_2};
    private final Context mContext;

    public SectionsPagerAdapter(Context context, FragmentManager fm) {
        super(fm);
        mContext = context;
    }

    @Override
    public Fragment getItem(int position ) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a PlaceholderFragment (defined as a static inner class below).
        //return PlaceholderFragment.newInstance(position + 1);
        Fragment fragment = null;
        switch (position)
        {
            case 0:
                fragment = new frag2();
                Bundle bun = new Bundle();
                bun.putString("NAME" , "Moaaz");
                fragment.setArguments(bun);
                break;
            case 1:
                fragment = new frag3();
                Bundle bun1 = new Bundle();
                bun1.putString("NAME" , "Moaaz2");
                fragment.setArguments(bun1);
                break;
        }
        return fragment;

    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
        return mContext.getResources().getString(TAB_TITLES[position]);
    }

    @Override
    public int getCount() {
        // Show 2 total pages.
        return 2;
    }
}
public class frag2 extends Fragment {


    public frag2() {
        // Required empty public constructor
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view= inflater.inflate(R.layout.fragment_frag2, container, false);
        TextView tes=(TextView) view.findViewById(R.id.testV1);
        String strtext = getArguments().getString("NAME");

        tes.setText("Name :" + strtext );
        return  view;
    }

}
public class register extends AppCompatActivity {
     private Button singin ;

      EditText name , password , email ;

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

        name = findViewById(R.id.registerUsername);
        password = findViewById(R.id.registerPw);
        email = findViewById(R.id.registerEmail);

        singin = findViewById(R.id.singinbtn);
        singin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                goHomePage();
            }
        });
    }

    public void goHomePage(){
        String nameValue = name.getText().toString();
        String pwValue = password.getText().toString();
        String emailValue = email.getText().toString();

      Intent intent = new Intent(register.this , HomePage.class);
        intent.putExtra("NAME" , nameValue);
        intent.putExtra("PW" , pwValue);
        intent.putExtra("EMAIL" , emailValue);



        startActivity(intent);
    }

}
注意:HomePage.java是活动的主要类。

public class HomePage extends AppCompatActivity {
    String name , pw , email ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home_page);
        SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(this, 
        getSupportFragmentManager());
        ViewPager viewPager = findViewById(R.id.view_pager);
        viewPager.setAdapter(sectionsPagerAdapter);
        TabLayout tabs = findViewById(R.id.tabs);
        tabs.setupWithViewPager(viewPager);



        name = (getIntent().getStringExtra("NAME"));
        pw =  getIntent().getStringExtra("PW") ;
        email =  getIntent().getStringExtra("EMAIL") ;

        Fragment frag = new frag2();
        Bundle bun = new Bundle();
        bun.putString("NAME" , name);
        frag.setArguments(bun);

    }
}

现在有人能帮我如何将数据从“登录活动,编辑文本”传递到“每次点击”?如果您想移动到viewpager中的特定片段,可以尝试以下方法

public class HomePage extends AppCompatActivity {
    String name , pw , email ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home_page);
        SectionsPagerAdapter sectionsPagerAdapter = new SectionsPagerAdapter(this, 
        getSupportFragmentManager());
        ViewPager viewPager = findViewById(R.id.view_pager);
        viewPager.setAdapter(sectionsPagerAdapter);
        TabLayout tabs = findViewById(R.id.tabs);
        tabs.setupWithViewPager(viewPager);



        name = (getIntent().getStringExtra("NAME"));
        pw =  getIntent().getStringExtra("PW") ;
        email =  getIntent().getStringExtra("EMAIL") ;

        Fragment frag = new frag2();
        Bundle bun = new Bundle();
        bun.putString("NAME" , name);
        frag.setArguments(bun);

    }
}
 viewPager.setCurrentItem(0);//for first fragment
 viewPager.setCurrentItem(1);//for second fragment you put in the adapter

要将数据从活动传递到片段,必须使用bundle。是我所知道的最好的解决方案,对初学者来说可能有点难理解,但它很简单。

我想将数据从活动传递到片段非常感谢,你知道我在哪里可以找到YouTube tech me上的视频如何从头开始制作选项卡式应用程序吗?我不确定视频的质量,但一定要在互联网上搜索足够多你不确定的内容。