单击“当前”按钮时,输入值更改时“百分比”不会更改。第一次单击后,“百分比”的值会更改。按“遗漏”按钮时会出现同样的问题。第一次点击后,当我按下“当前”按钮增量功能工作时,“错过”按钮减量功能工作。
我希望当按下“按钮b”时,它会计算“百分比”。当用户按下“当前”时,它会从先前输入的值中增加“e1(有人值守)和有人值(总量)”的值,然后计算“百分比”。对于“遗漏”按钮,它仅增加e2的值,然后计算百分比。
EditText e1,e2;
Button b,save;
TextView t;
String attended,total,mysum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
e1=(EditText) findViewById(R.id.editTextN1);
e2=(EditText) findViewById(R.id.editTextN2);
b=(Button) findViewById(R.id.buttoncalcsum);
save= (Button) findViewById(R.id.save);
t=(TextView) findViewById(R.id.textViewresult);
SharedPreferences pre=getSharedPreferences("data",Context.MODE_PRIVATE);
e1.setText(pre.getString("attended", ""));
e2.setText(pre.getString("total", ""));
t.setText(pre.getString("mysum", ""));
b.setOnClickListener(new OnClick());
}
public class OnClick implements OnClickListener
{
@Override
public void onClick(View v)
{
double n1 = Integer.parseInt(e1.getText().toString());
e1.setBackgroundColor(Color.CYAN);
double n2 = Integer.parseInt(e2.getText().toString());
e2.setBackgroundColor(Color.BLUE);
double mysum;
mysum=(n1/n2)*100;
if(mysum>65)
{ t.setText(String.format("%.2f", mysum));
t.setBackgroundColor(Color.GREEN);}
else
{ t.setText(String.format("%.2f", mysum));
t.setBackgroundColor(Color.RED);}
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void execute(View v) {
SharedPreferences prefre=getSharedPreferences("data",Context.MODE_PRIVATE);
Editor editor=prefre.edit();
editor.putString("attended", e1.getText().toString());
editor.putString("total", e2.getText().toString());
editor.putString("mysum", t.getText().toString());
editor.commit();
finish(); }
public void increment(View v) {
int t1 = Integer.parseInt(e1.getText().toString());
e1.setText(String.valueOf(t1+1));
int t2 = Integer.parseInt(e2.getText().toString());
e2.setText(String.valueOf(t2+1));
double mysum;
mysum=((double)t1/t2)*100;
if(mysum>65)
{ t.setText(String.format("%.2f", mysum));
t.setBackgroundColor(Color.GREEN);}
else
{ t.setText(String.format("%.2f", mysum));
t.setBackgroundColor(Color.RED);}
}
public void decrement(View v) {
int p1 = Integer.parseInt(e1.getText().toString());
int p2 = Integer.parseInt(e2.getText().toString());
e2.setText(String.valueOf(p2+1));
double mysum;
mysum=((double)p1/p2)*100;
if(mysum>65)
{ t.setText(String.format("%.2f", mysum));
t.setBackgroundColor(Color.GREEN);}
else
{ t.setText(String.format("%.2f", mysum));
t.setBackgroundColor(Color.RED);}
}
这是activity_main.xml文件
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.counter.MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="90dp"
android:text="ATTENDED" />
<EditText
android:id="@+id/editTextN1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView1"
android:layout_alignBottom="@+id/textView1"
android:layout_marginLeft="42dp"
android:layout_toRightOf="@+id/textView1"
android:ems="10"
android:inputType="number"
android:hint="ENTER VALUE HERE"
android:gravity="center"/>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/editTextN1"
android:layout_marginTop="39dp"
android:layout_toLeftOf="@+id/editTextN1"
android:text="TOTAL" />
<EditText
android:id="@+id/editTextN2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView2"
android:layout_alignBottom="@+id/textView2"
android:layout_alignLeft="@+id/editTextN1"
android:layout_alignRight="@+id/editTextN1"
android:ems="10"
android:inputType="number"
android:hint="ENTER VALUE HERE"
android:gravity="center" />
<Button
android:id="@+id/save"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/buttoncalcsum"
android:layout_alignParentBottom="true"
android:onClick="execute"
android:text="SAVE" />
<Button
android:id="@+id/btnatnd"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/save"
android:layout_alignRight="@+id/editTextN2"
android:onClick="increment"
android:text="PRESENT" />
<Button
android:id="@+id/btnmiss"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/save"
android:layout_alignParentLeft="true"
android:onClick="decrement"
android:text="MISSED" />
<Button
android:id="@+id/buttoncalcsum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toRightOf="@+id/btnmiss"
android:text="CALCULATE" />
<TextView
android:id="@+id/textViewresult"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/buttoncalcsum"
android:layout_marginTop="46dp"
android:layout_toLeftOf="@+id/btnatnd"
android:text="PERCENTAGE"
android:textAppearance="?android:attr/textAppearanceLarge" />
答案 0 :(得分:0)
据我了解,您尚未导入按钮btnatnd
和btnmiss
。同样在increment()
和decrement()
的函数中,您设置TextView
的文本,使得t1,t2正在增加而p2正在减少。但是,t1,t2和p2的值保持不变。
您还应该使用t1+=1;
,t2+=1;
和p2-=1;
希望这有帮助!
答案 1 :(得分:0)
根据我的理解,我认为您想要计算百分比,总和和其他功能,并且您没有获得更新的答案,因为您正在使用共享偏好设置。 所以在这种情况下,我建议您使用以下两种方法:
1:当你计算百分比或任何其他东西时(我假设你在计算中很好并且计算它有任何错误)。您应该制作两种不同的方法一种用于在共享首选项中保存计算,另一种用于检索最后的结果。因此,当您计算时,首先调用save方法,然后调用retrieve方法以检索文本字段中的值或您想要的位置
2:这是更有效的方式。您可以使接收器对首选项的值进行任何更改,并在更改时通知它,因此您可以使用这些更新。
答案 2 :(得分:0)
在increment()/ decrement()函数中,您更新Attended / Total TextViews的值,但是您将从旧值计算总和。 尝试先更新值,例如:
public void increment(View v) {
...
int t1 = Integer.parseInt(e1.getText().toString());
e1.setText(String.valueOf(t1+1));
int t2 = Integer.parseInt(e2.getText().toString());
e2.setText(String.valueOf(t2+1));
t1++; t2++; // updating values here
....
mysum=((double)t1/t2)*100;
....
}