Как передать одну вычисляемую переменную в несколько действий - PullRequest
0 голосов
/ 03 октября 2018

Я только что понял, как использовать намерение для передачи переменных в другое действие, но я обнаружил, что у него есть предел, он может передавать только одну переменную в одно действие.Я хочу знать, как разделить переменную в нескольких действиях, как у меня есть эта переменная в действии 1, и я хочу использовать ее в упражнении 2 и задании 3.

это мое занятие 1, переменная, которую я хочуиспользовать это в других заданиях (double ans = (90 + 4.8 * nh + 13.4 * nw-5.7 * na);) Я выяснил, как передать его в упражнение 2, но не могу передать его в упражнение 3. Есть липростой способ передать переменную в нескольких действиях, потому что я немного новичок в Android и ООП, есть много вещей, которые я действительно не получаю только от поиска.Большое вам спасибо!

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_male);

    age =(TextView)findViewById(R.id.age);
    height=(TextView)findViewById(R.id.heigth);
    weight =(TextView)findViewById(R.id.weigth);
    result =(TextView)findViewById(R.id.result);

    eage=(EditText)findViewById(R.id.eage);
    eheight=(EditText)findViewById(R.id.eheight);
    eweight=(EditText)findViewById(R.id.eweight);


    calculate=(Button)findViewById(R.id.calculate);
    back =(Button)findViewById(R.id.back);
    next =(Button)findViewById(R.id.next);



    calculate.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            double na=Double.parseDouble(eage.getText().toString());
            double nh=Double.parseDouble(eheight.getText().toString());
            double nw=Double.parseDouble(eweight.getText().toString());
            double ans=(90+4.8*nh+13.4*nw-5.7*na);
            result.setText("Your BMR is "+ans);



        }
    });

    back.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i=new Intent(MALE.this,MainActivity.class);
            startActivity(i);
        }
    });

    next.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent i = new Intent(MALE.this, MALERUN.class);
            double na=Double.parseDouble(eage.getText().toString());
            double nh=Double.parseDouble(eheight.getText().toString());
            double nw=Double.parseDouble(eweight.getText().toString());
            double ans=(90+4.8*nh+13.4*nw-5.7*na);
            result.setText("Your BMR is "+ans);
            i.putExtra("answer",ans);
            i.putExtra("age",na);
            i.putExtra("height",nh);
            i.putExtra("weight",nw);
            startActivity(i);
        }
    });



}

Ответы [ 3 ]

0 голосов
/ 03 октября 2018

Используя SharedPreferences вы можете получить его. Вот примеры

    next.setOnClickListener{

        SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
        SharedPreferences.Editor editor = sharedPref.edit();
        editor.putString("answer",ans);
        editor.putString("age",""+na);
        editor.putString("height",""+nh);
        editor.putString("weight",""+nw);
        editor.commit();

        Intent i=new Intent(MALE.this,MainActivity.class);
        startActivity(i);
    }

Любой другой вид деятельности, вы можете получить его ниже

      @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        SharedPreferences sharedPref = 
        PreferenceManager.getDefaultSharedPreferences(this);  
        String answer = sharedPref.getString("answer",null);
        String age = sharedPref.getString("age",null);
        Log.e("resultsss",""+answer + " age : "+age);

}

Решение 2:

Либо вам нужно использовать базу данных Sqlite

предложение: если у вас намного меньше полей лучшеиспользовать SharedPreferences, если у вас мало данных об объятиях, лучше использовать базу данных Sqlite

0 голосов
/ 03 октября 2018

Использовать SingleTon Шаблон.

public class SingletonClass {

    private double yourValue;
    private static SingletonClass sSoleInstance;

    private SingletonClass() {
    } // private constructor.

    public static SingletonClass getInstance() {
        if (sSoleInstance == null) { 
            sSoleInstance = new SingletonClass();
        }

        return sSoleInstance;
    }

    public void setValue(double val) {
        yourValue = val;
    }

    public double getValue() {
        return yourValue;
    }
    }

Установить переменную из Activity1

    SingletonClass.getInstance().setValue(yourValue);

Теперь вы можете получить доступ к этому значению через приложение.

    SingletonClass.getInstance().getValue();

Для получения более подробной информации нажмите здесь

0 голосов
/ 03 октября 2018

Вы можете объявить переменную:

public class MainActivity extends AppCompatActivity {

// Like below
    public static double ans;

@Override
protected void onCreate(Bundle savedInstanceState) {
...
   }
}

И вызывать ее из любого места, как это:

MainActivity.ans;

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

просто сделайте это:

MainActivity.ans = 123.123;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...