Static переменная из EditText Android
С прошлого вопроса я так и не получил точного ответа, как передать переменную из EditText с одного фрагмента на другой, но я узнал, что для этого можно воспользоваться static переменными.
При попытке сделать переменную из EditText статичной, мне выдаёт такую ошибку: Non-static variable 'bEt' cannot be referenced from a static context и Modifier 'static' not allowed here.
static float b = Float.parseFloat(bEt.getText().toString());
Что мне делать?
Вот весь код:
Fragment1.java
package com.example.quadraticequationsolver;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import java.lang.Math;
import java.util.Objects;
public class fragment1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView = inflater.inflate(R.layout.fragment_fragment1, container, false);
EditText aEt = (EditText) rootView.findViewById(R.id.a);
EditText bEt = (EditText) rootView.findViewById(R.id.editText);
EditText cEt = (EditText) rootView.findViewById(R.id.editText2);
TextView d = (TextView) rootView.findViewById(R.id.discriminant);
TextView explanation = (TextView) rootView.findViewById(R.id.textView11);
Button solve = (Button) rootView.findViewById(R.id.button);
TextView solution = (TextView) rootView.findViewById(R.id.solutionTv);
ImageView formula1 = (ImageView) rootView.findViewById(R.id.imageView);
solve.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (aEt.getText().length() == 0) {
aEt.setText("1");
}
if (bEt.getText().length() == 0) {
bEt.setText("1");
}
if (cEt.getText().length() == 0) {
cEt.setText("0");
}
float b = Float.parseFloat(bEt.getText().toString());
float a = Float.parseFloat(aEt.getText().toString());
float c = Float.parseFloat(cEt.getText().toString());
float dis = b * b - 4 * a * c;
Fragment fr = new Fragment();
Bundle bundle = new Bundle();
bundle.putFloat("aVar", a);
fr.setArguments(bundle);
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction().replace(R.id.content_frame, fr).commit();
d.setText("= " + bEt.getText().toString() + "² - 4 * " + aEt.getText().toString() + " * " + cEt.getText().toString() + " = " + Float.toString(dis));
}
});
return rootView;
}
}
fragment3.java
package com.example.quadraticequationsolver;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.jjoe64.graphview.GraphView;
import com.jjoe64.graphview.series.DataPoint;
import com.jjoe64.graphview.series.LineGraphSeries;
public class fragment3 extends Fragment {
LineGraphSeries<DataPoint> series;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View rootView1 = inflater.inflate(R.layout.fragment_fragment3, container, false);
double y,x;
x = -500.0;
Bundle test = getArguments();
Float a = test.getFloat("aVar");
GraphView graph = (GraphView) rootView1.findViewById(R.id.graph);
series = new LineGraphSeries<DataPoint>();
for(int i = 0; i < 1000; i++) {
x = x + 0.1;
y = x * a;
series.appendData(new DataPoint(x, y), true, 1000);
}
graph.addSeries(series);
return rootView1;
}
}
VPadapter.java
package com.example.quadraticequationsolver;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import java.util.ArrayList;
public class VPAdapter extends FragmentPagerAdapter {
private final ArrayList<Fragment> fragmentArrayList = new ArrayList<>();
private final ArrayList<String> fragmentTitle = new ArrayList<>();
public VPAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
return fragmentArrayList.get(position);
}
@Override
public int getCount() {
return fragmentArrayList.size();
}
public void addFragment(Fragment fragment, String title) {
fragmentArrayList.add(fragment);
fragmentTitle.add(title);
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return fragmentTitle.get(position);
}
}