我正在尝试将一个int变量从一个活动类(A)传递给另一个活动类(B)。由于我是初学者,我被困在这里。
我尝试了很多方法,但每次在调试模式下运行代码时,我都可以看到传入第二个类的int值变为0。
活动代码A
public void startMainActivity(View view)
{
//Sending the semester value to Navdrawer
Intent intentsem = new Intent(LoginActivity.this, NavDrawer.class);
intentsem.putExtra("UserSemester", usersemester);
startActivity(intentsem);
//Sending the branch value to Navdrawer
Intent intentbranch= new Intent(LoginActivity.this, NavDrawer.class);
intentbranch.putExtra("UserBranch", userbranch);
startActivity(intentbranch);
}
活动B的代码
public void startSyllabusactivity(View view)
{
// for first year
int semester = getIntent().getIntExtra("UserSemester", 0);
if (semester==1 || semester==2) {
Intent l = new Intent(this, firstyear_syllabussubject_selector.class);
startActivity(l);
}
//rest of the actions with branches to be added***********************
}
答案 0 :(得分:2)
您需要使用Intent: 活动A:
doneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, ActivityB.class);
intent.putExtra("my_value", 2); //2 is the value you want to pass
intent.putExtra("UserBranch", userbranch);
startActivity(intent);
}
});
活动B:
int variable = getIntent().getIntExtra("my_value", 0);//0 is the default value if the getintExtra doesn't find the "my_value"
int userBranch= getIntent().getIntExtra("UserBranch", 0);//0 is the default
答案 1 :(得分:1)
您始终可以使用intent.putExtra()
方法,例如:
Intent intent = new Intent(ActivityA.this, ActivityB.class);
intent.putExtra("myInt", myInt);
startActivity(intent);
并通过以下方式获取ActivityB
Bundle extras = getIntent().getExtras();
if (extras != null) {
int value = extras.getInt("myInt");
//The key argument here must match that used in the other activity
}
哦提醒一下,你应该首先在谷歌或直接在SO上查询你的问题,因为你的问题是一个非常普遍的问题,你可以躲避那个反对的投票。
答案 2 :(得分:1)
为此你应该使用 Intent 。你可以从下面的代码中获得想法;
假设你有int变量as;
int x = 2;
将此代码放在您要转到另一个活动的活动中:
Intent i = new Intent(getApplicationContext(), SecondActivity.class);
i.putExtra("xVar", x);
startActivity(i);
在第二个活动中使用此代码;
Intent i = getIntent();
int xVal = i.getIntExtra("xVar", 0);
答案 3 :(得分:0)
Intent myIntent = new Intent(FirstActivity.this,SecondActivity.class);
myIntent.putExtra("value", (int)100);
startActivity(myIntent);
在第二项活动中
Bundle extras = getIntent().getExtras();
int value= extras.getInt("value");
答案 4 :(得分:0)
在您当前的活动中,创建一个新的意图:
Intent i = new Intent(CurrentActivity.this, NewActivity.class);
i.putExtra("intValue",100);
startActivity(i);
然后在新的Activity中,检索这些值:
Bundle extras = getIntent().getExtras();
if (extras != null) {
int value = extras.getInt("intValue");
//The key argument here must match that used in the other activity
}
使用此技术将变量从一个Activity传递到另一个Activity。
答案 5 :(得分:0)
您可以使用“共享”偏好设置来解决此问题。
在活动A中:
int no = 1;
SharedPreferences sharedpreferences = getSharedPreferences(MyPREFERENCES,Context.MODE_PRIVATE);
编辑器编辑器= sharedpreferences.edit();
editor.putString(" my_number",no +"");
editor.commit();
在活动B中:
SharedPreferences prefs = getSharedPreferences(MyPREFERENCES,MODE_PRIVATE);
String m_no = prefs.getString(" my_number",null);