Java Android:如何将片段上的值传递给Activity类(处理TabPages)
我想知道如何像C#中的会话一样将我的值传递给Android。这是我正在加载主页的登录类Java Android:如何将片段上的值传递给Activity类(处理TabPages),java,android,android-fragments,Java,Android,Android Fragments,我想知道如何像C#中的会话一样将我的值传递给Android。这是我正在加载主页的登录类 String sEmployeeName = Message.toString(); String sEmployeeID = UserID; Person person = new Person(); person.setFirstName("Welcome, " + sEmployeeName); pers
String sEmployeeName = Message.toString();
String sEmployeeID = UserID;
Person person = new Person();
person.setFirstName("Welcome, " + sEmployeeName);
person.setLastName(UserID);
Intent intentMain = new Intent(LoginActivity.this ,
SwipePageActivity.class);
intentMain.putExtra("Person", person);
startActivity(intentMain);
请注意,我的SwipePageActivity.Class是要加载TabPages的类。我创建了一个Tab1类来填充第一个选项卡中的活动。在我的Tab1片段中,我有这样一个代码
public class Tab1 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_main,container,false );
return rootView;
}
}
import java.io.Serializable;
public class Person implements Serializable {
String sFirstName;
String sLastName;
public void setFirstName(String sFirstName){
this.sFirstName = sFirstName;
}
public void setLastName(String sLastName){
this.sLastName = sLastName;
}
public String getFirstName()
{
return sFirstName;
}
public String getLastName()
{
return sLastName;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Person person = (Person) getIntent().getExtras().getSerializable("Person");
final Button btnSearch = (Button) findViewById(R.id.btnSearch);
//final Button btnLogout = (Button) findViewById(R.id.btnLogout);
final Button btnApprove = (Button) findViewById(R.id.btnApprove);
listView = (ListView) findViewById(R.id.listView);
findViewById(R.id.txtEmployeeID).setVisibility(View.GONE);
final TextView tvID = (TextView) findViewById(R.id.txtEmployeeID);
TextView tvName = (TextView) findViewById(R.id.txtEmployeeName);
tvName.setText(person.getFirstName());
tvID.setText(person.getLastName());
assert btnSearch != null;
assert btnApprove != null;
//assert btnLogout != null;
}
类代码如下所示
public class Tab1 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_main,container,false );
return rootView;
}
}
import java.io.Serializable;
public class Person implements Serializable {
String sFirstName;
String sLastName;
public void setFirstName(String sFirstName){
this.sFirstName = sFirstName;
}
public void setLastName(String sLastName){
this.sLastName = sLastName;
}
public String getFirstName()
{
return sFirstName;
}
public String getLastName()
{
return sLastName;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Person person = (Person) getIntent().getExtras().getSerializable("Person");
final Button btnSearch = (Button) findViewById(R.id.btnSearch);
//final Button btnLogout = (Button) findViewById(R.id.btnLogout);
final Button btnApprove = (Button) findViewById(R.id.btnApprove);
listView = (ListView) findViewById(R.id.listView);
findViewById(R.id.txtEmployeeID).setVisibility(View.GONE);
final TextView tvID = (TextView) findViewById(R.id.txtEmployeeID);
TextView tvName = (TextView) findViewById(R.id.txtEmployeeName);
tvName.setText(person.getFirstName());
tvID.setText(person.getLastName());
assert btnSearch != null;
assert btnApprove != null;
//assert btnLogout != null;
}
在我的activity_主布局中,我有一个这样编码的java类
public class Tab1 extends Fragment {
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.activity_main,container,false );
return rootView;
}
}
import java.io.Serializable;
public class Person implements Serializable {
String sFirstName;
String sLastName;
public void setFirstName(String sFirstName){
this.sFirstName = sFirstName;
}
public void setLastName(String sLastName){
this.sLastName = sLastName;
}
public String getFirstName()
{
return sFirstName;
}
public String getLastName()
{
return sLastName;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Person person = (Person) getIntent().getExtras().getSerializable("Person");
final Button btnSearch = (Button) findViewById(R.id.btnSearch);
//final Button btnLogout = (Button) findViewById(R.id.btnLogout);
final Button btnApprove = (Button) findViewById(R.id.btnApprove);
listView = (ListView) findViewById(R.id.listView);
findViewById(R.id.txtEmployeeID).setVisibility(View.GONE);
final TextView tvID = (TextView) findViewById(R.id.txtEmployeeID);
TextView tvName = (TextView) findViewById(R.id.txtEmployeeName);
tvName.setText(person.getFirstName());
tvID.setText(person.getLastName());
assert btnSearch != null;
assert btnApprove != null;
//assert btnLogout != null;
}
我想要的是获取我在Person类中传递给Login类的值
有人能帮我吗
如果您需要我的页面适配器代码,请点击这里
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch(position) {
case 0:
Tab1 tab1 = new Tab1();
return tab1;
case 1:
Tab2 tab2 = new Tab2();
return tab2;
case 2:
Tab3 tab3 = new Tab3();
return tab3;
}
return null;
// 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);
}
@Override
public int getCount() {
// Show 3 total pages.
return 3;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return "APPROVAL";
case 1:
return "NONE";
case 2:
return "NONE";
}
return null;
}
}
您需要将Person对象传递给适配器的构造函数,然后在getItem方法中创建Bundle对象并将该Person保存到其中(Bundle.putParcalable)。然后将该包传递给片段(tab1.setArguments(bundle)) 要在片段中获取Person对象,请创建Bundle对象并从片段的参数(getArguments())获取它。然后从包中获取Person对象:
public class Tab1 extends Fragment {
private Person person;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
Bundle bundle = getArguments();
person = (Person) bundle.getParcelable("person");
View rootView = inflater.inflate(R.layout.activity_main,container,false );
return rootView;
}
}
现在您的片段中有了Person对象!:) 这个问题一点也不清楚,但如果我理解的话,你想知道登录的“人”的信息 我会这样做: 亲自上课:
public class Person implements... {
private static Person currentPerson;
public static Person getCurrentPerson(){
return currentPerson;
public static void setCurrentPerson(Person current){
currentPerson = current;
}
当您登录时,将currentUser设置为Person.setCurrentPerson()
当您想要获取它时,可以调用Person.getCurrentPerson()
当您注销时,将CurrentPerson设置为null
希望对您有所帮助。您好,我编辑了我的问题,发布了我的个人课程。@eljon_i3您尝试过我的答案吗?这不是您需要的吗?但是我如何才能将Person值获取到MainActivity.Class?您有Person对象,因此可以从中获取值。person.getFirstName();person.getLastName();我不明白你的意思。您希望在片段或MainActivity中的MainActivityy?中使用Person值。然后告诉我您在哪里为MainActivity类创建Intent,因为您需要将Person对象传递到Intent中