2016-07-26 4 views
-2

Я пытался передать переменную int из одного класса активности (A) в другой класс активности (B). Поскольку я новичок, я застрял здесь.Передать значение из переменной int в один класс другому классу

Я пробовал много методов, но каждый раз, когда я запускаю код в режиме отладки, я могу видеть, что ИНТ значение, которое я перешел во второй класс превращается в 0.

кодекса для деятельности

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*********************** 

} 
+5

Можете ли вы опубликовать код и для того, чтобы найти точную проблему. – VatsalSura

+0

Вы используете намерение или нет? –

ответ

2

Вы должны использовать Намерение: активность 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 
+0

Я не могу использовать 'startActivity (намерение);' так как я не хочу запускать активность B, как только передается значение. Для этой цели есть специальная кнопка DONE. Как я могу это сделать? –

+0

Вы помещаете код в метод OnClick вашей сделанной кнопки – Chol

+0

По-прежнему значение становится равным 0, когда оно достигает второго действия. Я обновил вопрос с помощью кода. –

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 
} 

Ой как напоминание, вы должны сначала просмотреть свой вопрос в Google или ctly на SO, так как ваш вопрос является довольно общим, и вы можете уклониться от этого негативного голос ..

+0

Я верю, что 'getIntExtra' имеет дополнительный параметр, нет? –

+0

Правда, я отредактирую свой ответ –

+0

Noob здесь. Искал много вопросов. Но понял, что ошибка была на моей стороне. Принести извинения! –

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"); 
0

В текущей деятельности, создать новый Intent:

Intent i = new Intent(CurrentActivity.this, NewActivity.class); 
i.putExtra("intValue",100); 
startActivity(i); 

Тогда в новой деятельности, получить эти значения:

Bundle extras = getIntent().getExtras(); 
if (extras != null) { 
    int value = extras.getInt("intValue"); 
    //The key argument here must match that used in the other activity 
} 

Используйте эту технику для передачи переменных из одной активности в другую.

1

Для этого вы должны использовать Цель. Вы можете получить представление из ниже кода;

Предположим, что у вас есть int variable as;

int x = 2; 

Поместите этот код в деятельности, с которой вы хотите перейти на другой вид деятельности:

Intent i = new Intent(getApplicationContext(), SecondActivity.class); 
i.putExtra("xVar", x); 
startActivity(i); 

В Second деятельности использовать этот код;

Intent i = getIntent(); 
int xVal = i.getIntExtra("xVar", 0); 
0

Вы можете использовать общие настройки, чтобы решить эту проблему.не

В активность А:

INT нет = 1;

SharedPreferences sharedpreferences = getSharedPreferences (MyPREFERENCES, Context.MODE_PRIVATE);

Редактор editor = sharedpreferences.edit();

editor.putString ("my_number", no + "");

editor.commit();

В активность B:

SharedPreferences Prefs = getSharedPreferences (MyPREFERENCES, MODE_PRIVATE);

Строка m_no = prefs.getString ("my_number", null);

Смежные вопросы