【发布时间】:2020-05-18 11:18:42
【问题描述】:
片段 A
这里的问题是每当我打电话
passitem(),passqty(),passamt(),passtot()我得到的值 在初始化时声明。即int totalp = 0; String itemp = "", qtyp = "", amtp = ""。我想要变量itemp=item;,qtyp=qty;,amtp=amt;,totalp=total;i.e,local 可变数据。请帮帮我,我非常感谢你们。另外 P.S:-当我尝试获取数据
itemp,qtyp.etc 时onActivityCreated我已经很完美了。
public class Fragment_nonveg extends Fragment {
TextView t,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10;
CheckBox c1,c2,c3,c4,c5;
Button b1,b2,b5,b6,b7,b8,b9,b10,b11,b12;
ImageButton b3;
int x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,g1,g2,g3,g4,g5,g6,g7,g8,g9,g10;
String res,res1,res2,res3,res4,re,re1,re2,re3,re4;
//FloatingActionButton b4;
int totalp = 0;
String itemp = "", qtyp = "", amtp = "";
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
int total = 0;
String item = "", qty = "", amt = "";
if (c1.isChecked() == true) {
item = item + c1.getText().toString() + "\n";
qty = qty + t2.getText().toString() + "\n";
amt = amt + t1.getText().toString() + "\n";
String t = t1.getText().toString();
total = total + Integer.parseInt(t);
}
if (c2.isChecked() == true) {
item = item + c2.getText().toString() + "\n";
qty = qty + t4.getText().toString() + "\n";
amt = amt + t3.getText().toString() + "\n";
String t = t3.getText().toString();
total = total + Integer.parseInt(t);
}
if (c3.isChecked() == true) {
item = item + c3.getText().toString() + "\n";
qty = qty + t6.getText().toString() + "\n";
amt = amt + t5.getText().toString() + "\n";
String t = t5.getText().toString();
total = total + Integer.parseInt(t);
}
if (c4.isChecked() == true) {
item = item + c4.getText().toString() + "\n";
qty = qty + t8.getText().toString() + "\n";
amt = amt + t7.getText().toString() + "\n";
String t = t7.getText().toString();
total = total + Integer.parseInt(t);
}
if (c5.isChecked() == true) {
item = item + c5.getText().toString() + "\n";
qty = qty + t10.getText().toString() + "\n";
amt = amt + t9.getText().toString() + "\n";
String t = t9.getText().toString();
total = total + Integer.parseInt(t);
}
itemp=item;
qtyp=qty;
amtp=amt;
totalp=total;
}
public String passitem(){
return itemp;
}
public String passqty(){
return qtyp;
}
public String passamt(){
return amtp;
}
public Integer passtot(){
return totalp;
}
}
我这样调用代码:
public class Menu extends AppCompatActivity {
public FloatingActionButton b4;
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
b4 = findViewById(R.id.fab);
Fragment_nonveg fragment_n = new Fragment_nonveg();
final String nitem=fragment_n.passitem();
final String nqty=fragment_n.passqty();
final String namt=fragment_n.passamt();
final Integer ntotal=fragment_n.passtot();
【问题讨论】:
-
能分享一下使用这个类的代码吗?
-
我认为不需要该代码。因为它与其他类无关。
Fragment_nonveg中定义的函数passitem(),passqty()..etc 必须处理类变量(全局).@thelr 你能告诉我 itemp、qtyp 等在退出onActivityCreated后正在重新设置吗? -
不,我不能不看到这些方法是如何被调用的。我不需要整个其他类,只需要包含对
onActivityCreated()和各种pass方法的调用的代码sn-p。如果该代码过于复杂或“敏感”,请创建一个单独的类,将这些方法作为测试用例调用,确保它也中断,然后发送。 -
这是我调用这些方法的代码:-
public class Menu extends AppCompatActivity { public FloatingActionButton b4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_menu); b4 = findViewById(R.id.fab); Fragment_nonveg fragment_n = new Fragment_nonveg(); final String nitem=fragment_n.passitem(); final String nqty=fragment_n.passqty(); final String namt=fragment_n.passamt(); final Integer ntotal=fragment_n.passtot(); -
另外 PS:-当我尝试在
onActivityCreated中获取数据itemp,qtyp.etc 时,我得到了完美的结果。它看起来像itemp,qtyp等在退出onActivityCreated后正在重置。
标签: java android fragment global local