2015-11-02 2 views
-1

мне нужно брать значения а и Ь от пользователя через EditText и передать его следующему activity.This является первым активность:Значения не передается на первый щелчок EditText

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.Spinner; 
import android.widget.TextView; 
import android.content.Intent; 
import android.widget.EditText; 

public class activitysecond extends AppCompatActivity { 

    private String[] arraySpinner; 
    private String[] arraySpinner2; 
    int a=0,b=0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.secondactivity); 
     final EditText editText1=(EditText) findViewById(R.id.editText1); 
     final EditText editText2=(EditText) findViewById(R.id.editText2); 
     final Bundle bundle = new Bundle(); 
     Button EnterButton=(Button) findViewById(R.id.Enterbutton); 

     this.arraySpinner = new String[]{ 
       "None", "Lightly Active", "Moderately Active", "Very Active" 
     }; 
       Spinner s = (Spinner) findViewById(R.id.spinner1); 
     ArrayAdapter<String> adapter = new ArrayAdapter<> 
       (this, 
         android.R.layout.simple_spinner_dropdown_item, arraySpinner 
       ); 

     s.setAdapter(adapter); 

     this.arraySpinner2 = new String[]{ 
       "Male", "Female" 
     }; 

       Spinner s1 = (Spinner) findViewById(R.id.spinner2); 
     ArrayAdapter<String> adapter1 = new ArrayAdapter<> 
       (this, 
         android.R.layout.simple_spinner_dropdown_item, arraySpinner2 
       ); 
     s1.setAdapter(adapter1); 

     editText1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       a = Integer.valueOf(editText1.getText().toString()); 
       bundle.putInt("one",a); 
      } 

     }); 

     editText2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       b = Integer.valueOf(editText2.getText().toString()); 
       bundle.putInt("two",b); 
      } 

     }); 

     EnterButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent z = new Intent(activitysecond.this, activitythird.class); 
       startActivity(z); 
       z.putExtras(bundle); 
      } 
     }); 
    } 
} 

следующая деятельность, к которой я хочу передать значения является

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.TextView; 

public class activitythird extends AppCompatActivity { 

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

} 

public void thirdbutton(View view){ 
    final TextView thirdtext=(TextView) findViewById(R.id.thirdtext); 

    Bundle seconddata=getIntent().getExtras(); 
    int vala=seconddata.getInt("one"); 
    int valb=seconddata.getInt("two"); 

    thirdtext.setText(vala + " " +valb); 


} 

}

значения а и б не прошло и thirdtext не меняет Пожалуйста, помогите !!

+0

вы устанавливаете дополнительные функции после запуска: startActivity (z); z.putExtras (расслоение); попробуйте putExtra() перед startActivity() –

ответ

0

Измените код следующим образом:

EnterButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent z = new Intent(activitysecond.this, activitythird.class); 
       z.putExtras(bundle); 
       startActivity(z); 
      } 
     }); 

z.putExtras(bundle); должен быть выше, startActivity(z);

1

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

Попробуйте так:

Intent z = new Intent(activitysecond.this, activitythird.class); 
z.putExtras(bundle); 
startActivity(z); 
+0

thank u! теперь работает отлично. –

1

Удалить ClickListener для редактирования текстов и добавьте следующие строки в onClick из EnterButton

a = Integer.valueOf(editText1.getText().toString()); 
    bundle.putInt("one",a); 
    b = Integer.valueOf(editText2.getText().toString()); 
    bundle.putInt("two",b); 
1

Заменить этот

EnterButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent z = new Intent(activitysecond.this, activitythird.class); 
     startActivity(z); 
     z.putExtras(bundle); 
    } 
}); 

с

EnterButton.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent z = new Intent(activitysecond.this, activitythird.class); 
     z.putExtras("one", Integer.parseInt(editText1.getText().toString())); 
     z.putExtras("two", Integer.parseInt(editText2.getText().toString())); 
     startActivity(z); 
    } 
}); 
1

На нижнем; putExtra приходит до startActivity, это ошибка.

EnterButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent z = new Intent(activitysecond.this, activitythird.class); 
      startActivity(z); 
      z.putExtras(bundle); 
     } 
    }); 

старайтесь использовать код ниже;

EnterButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent z = new Intent(activitysecond.this, activitythird.class); 

      z.putExtras(bundle); // first 
      startActivity(z); //second 
     } 
    }); 

Также editText onClickListeners не должен быть реализован для вашего случая. Вы должны получить переменные через:

if (editText1.getText() != null) { // to avoid exception 
    a = Integer.valueOf(editText1.getText().toString()); 
    bundle.putInt("one",a); 
} 
if (editText2.getText() != null) { to avoid exception 
    b = Integer.valueOf(editText2.getText().toString()); 
    bundle.putInt("two",b); 
} 
Смежные вопросы