Ошибка при передаче данных между действиями - PullRequest
0 голосов
/ 17 мая 2011

Вот что у меня есть:

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.ArrayAdapter;
    import android.widget.EditText;
    import android.widget.Spinner;

    public class FireScreen extends Activity implements OnClickListener {



@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.firescreen);


    EditText FIinvolvedtext = (EditText) findViewById(R.id.FIinvolvedtext);
     String fireinvolvedsave = FIinvolvedtext.getText().toString();

        View FIUnitsStart = findViewById(R.id.FIUnitsStart);
        FIUnitsStart.setOnClickListener(this);
        View FIMainResume = findViewById(R.id.FIMainResume);
        FIMainResume.setOnClickListener(this);

        Spinner fire_type_spin = (Spinner) findViewById(R.id.FItypespin);
        ArrayAdapter<CharSequence> 
        adapter = ArrayAdapter.createFromResource(this, R.array.typespin_array, android.R.layout.simple_spinner_item);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        fire_type_spin.setAdapter(adapter);

        Spinner fire_type_array = (Spinner) findViewById(R.id.FIareaspin);
        ArrayAdapter<CharSequence> 
        adapter1 = ArrayAdapter.createFromResource(this, R.array.areaspin_array, android.R.layout.simple_spinner_item);
        adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        fire_type_array.setAdapter(adapter1);

        Spinner action_type_spin = (Spinner) findViewById(R.id.FIactionspin);
        ArrayAdapter<CharSequence> 
        adapter11 = ArrayAdapter.createFromResource(this, R.array.actionspin_array, android.R.layout.simple_spinner_item);
        adapter11.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        action_type_spin.setAdapter(adapter11);}


        public void onClick(View v) {

            switch(v.getId()){
            case R.id.FIUnitsStart:
                Intent UnitScreen = new Intent(this, UnitScreen.class);
                UnitScreen.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                startActivity(UnitScreen);
            break;

            case R.id.FIMainResume:
                Intent Main = new Intent(this, Main.class);
                Main.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                startActivity(Main);
            break;

            Intent pass = new Intent(getApplicationContext(), Main.class);   
            String keyIdentifer  = null;
            pass.putExtra("Involved", fireinvolvedsave);
    // Getting an error here: fireinvolvedsave cannot be resolved to a variable
            startActivity(pass);}}}

help - у меня есть 7 операций с данными, которые мне нужно передать обратно в основное действие, чтобы я мог поместить их в электронное письмо - вроде как застряло справаздесь

Ответы [ 4 ]

0 голосов
/ 17 мая 2011
just try this
public class FireScreen extends Activity implements OnClickListener 
{
String fireinvolvedsave ;
EditText FIinvolvedtext;
View FIUnitsStart,FIMainResume;
   @Override
   public void onCreate(Bundle savedInstanceState) 
   {
    super.onCreate(savedInstanceState);
setContentView(R.layout.firescreen);

FIinvolvedtext = (EditText) findViewById(R.id.FIinvolvedtext);
fireinvolvedsave = FIinvolvedtext.getText().toString();

        FIUnitsStart = findViewById(R.id.FIUnitsStart);
        FIUnitsStart.setOnClickListener(this);
        FIMainResume = findViewById(R.id.FIMainResume);
        FIMainResume.setOnClickListener(this);

       Spinner fire_type_spin = (Spinner) findViewById(R.id.FItypespin);
       ArrayAdapter<CharSequence> 
       adapter = ArrayAdapter.createFromResource(this, R.array.typespin_array, android.R.layout.simple_spinner_item);
       adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       fire_type_spin.setAdapter(adapter);

       Spinner fire_type_array = (Spinner) findViewById(R.id.FIareaspin);
       ArrayAdapter<CharSequence> 
       adapter1 = ArrayAdapter.createFromResource(this, R.array.areaspin_array, android.R.layout.simple_spinner_item);
       adapter1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       fire_type_array.setAdapter(adapter1);

       Spinner action_type_spin = (Spinner) findViewById(R.id.FIactionspin);
       ArrayAdapter<CharSequence> 
       adapter11 = ArrayAdapter.createFromResource(this, R.array.actionspin_array, android.R.layout.simple_spinner_item);
       adapter11.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
       action_type_spin.setAdapter(adapter11);
 }

    public void onClick(View v) 
{
            switch(v.getId())
    {
                case R.id.FIUnitsStart: Intent UnitScreen = new Intent(this, UnitScreen.class);
                          UnitScreen.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                          startActivity(UnitScreen);
                          break;

               case R.id.FIMainResume:Intent Main = new Intent(this, Main.class);
                             Main.setFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
                             startActivity(Main);
                             break;

               default:         Intent pass = new Intent(FireScreen.this, Main.class);   
                    pass.putExtra("Involved", fireinvolvedsave);
                    startActivity(pass);
    }
}

}

0 голосов
/ 17 мая 2011

Сделайте это:

final String fireinvolvedsave = FIinvolvedtext.getText().toString();

Посмотрите, работает ли это.

РЕДАКТИРОВАТЬ: так что вы запутались в вашем форматировании.Основная проблема заключается в том, что вы используете локальную переменную метода в функции экземпляра.Вы должны сделать это переменной экземпляра всей Деятельности.Ваш onCreate теперь будет выглядеть так:

String fireinvolvedsave;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.firescreen);


    EditText FIinvolvedtext = (EditText) findViewById(R.id.FIinvolvedtext);
    fireinvolvedsave = FIinvolvedtext.getText().toString();
0 голосов
/ 17 мая 2011

Есть несколько способов сделать это.например, вы можете сделать fireinvolvedsave переменной экземпляра, как предложил Бен.

Однако, поскольку вы, похоже, используете его только в своем методе onClick (), вот самый простой способ.Переместите эти строки из onCreate () в onClick ():

EditText FIinvolvedtext = (EditText) findViewById(R.id.FIinvolvedtext);
String fireinvolvedsave = FIinvolvedtext.getText().toString();
0 голосов
/ 17 мая 2011

fireinvolvedsave не виден, потому что вы объявили его как локальную переменную, отличный от метода, в котором вы читаете;вам нужно объявить его как поле действия, используя, например, public String и т. д. после public class FireScreen ... {


public class FireScreen extends Activity implements OnClickListener
{
  private String fireinvolvedsave;

  @Override
  public void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.firescreen);

    EditText FIinvolvedtext = (EditText) findViewById(R.id.FIinvolvedtext);
    fireinvolvedsave = FIinvolvedtext.getText().toString();

    // rest of original code for onCreate goes here
  }


  public void onClick(View v)
  {
    // original code etc

    Intent pass = new Intent(getApplicationContext(), Main.class);   

    // this now has a value:
    pass.putExtra("Involved", fireinvolvedsave);
    startActivity(pass);
  }
}

Попробуйте что-то вроде

Intent myIntent = getIntent();
String strText = myIntent.getStringExtra("Involved");

а затем

emailIntent.putExtra(EXTRA_TEXT, strText);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...