Java 我的一些代码没有在android Studio中执行?
在下面用于android Studio中android应用程序的程序中,当调用第二个类(Main2Activity)的getPercent()时,它总是返回999(默认值),并且 ttper= 永远不会执行onClick()中主类中的语句。有什么具体的原因吗?你们能指出来吗 这是主要的活动,Java 我的一些代码没有在android Studio中执行?,java,android,android-developer-api,Java,Android,Android Developer Api,在下面用于android Studio中android应用程序的程序中,当调用第二个类(Main2Activity)的getPercent()时,它总是返回999(默认值),并且 ttper= 永远不会执行onClick()中主类中的语句。有什么具体的原因吗?你们能指出来吗 这是主要的活动, public class MainActivity extends AppCompatActivity { float i1m,i2m,mm,atp,assp; float ttper=999; bool
public class MainActivity extends AppCompatActivity {
float i1m,i2m,mm,atp,assp;
float ttper=999;
boolean b=false;
EditText i1,i2,model,assignment,attendence;
Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Context cont = this;
final Intent intent = new Intent(cont, Main2Activity.class);
b1=(Button)findViewById(R.id.button2);
b1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//try {
i1=(EditText)findViewById(R.id.int1);
i2=(EditText)findViewById(R.id.int2);
model=(EditText)findViewById(R.id.mod);
assignment=(EditText)findViewById(R.id.assign);
attendence=(EditText)findViewById(R.id.attend);
i1m = Float.parseFloat(String.valueOf(i1.getText()));
i2m = Float.parseFloat(i2.getText().toString());
mm = Float.parseFloat(model.getText().toString());
assp = Float.parseFloat(assignment.getText().toString());
atp = Float.parseFloat(attendence.getText().toString());
ttper = ((i1m / 10) + (i2m / 10) + ((mm / 100) * 15) + (assp) + ((atp >= 75.0f) ? ((atp - 75) / 5) : 0.0f));
//setValues();
startActivity(intent);
//}
//catch (Exception e) {
// Log.e("app crash",e.getMessage());
//}
}
});
}
/*void setValues()
{
/* i1m = Float.parseFloat(String.valueOf(i1.getText()));
i2m = Float.parseFloat(i2.getText().toString());
mm = Float.parseFloat(model.getText().toString());
assp = Float.parseFloat(assignment.getText().toString());
atp = Float.parseFloat(attendence.getText().toString());*/
}/*
float getPercent()
{
//float ttper=50.0f;
return ttper;
}
}
public class Main2Activity extends AppCompatActivity {
float tper=1.0f;
String str;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
TextView v1 = (TextView) findViewById(R.id.textView11);
MainActivity m1 = new MainActivity();
//m1.setValues();
//try {
str = String.valueOf(m1.getPercent()) + "%";
v1.setText(str);
//}
//catch (Exception e) {
// Log.e("app crash",e.getMessage());
//}
}
}
这是第二项活动,
public class MainActivity extends AppCompatActivity {
float i1m,i2m,mm,atp,assp;
float ttper=999;
boolean b=false;
EditText i1,i2,model,assignment,attendence;
Button b1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final Context cont = this;
final Intent intent = new Intent(cont, Main2Activity.class);
b1=(Button)findViewById(R.id.button2);
b1.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
//try {
i1=(EditText)findViewById(R.id.int1);
i2=(EditText)findViewById(R.id.int2);
model=(EditText)findViewById(R.id.mod);
assignment=(EditText)findViewById(R.id.assign);
attendence=(EditText)findViewById(R.id.attend);
i1m = Float.parseFloat(String.valueOf(i1.getText()));
i2m = Float.parseFloat(i2.getText().toString());
mm = Float.parseFloat(model.getText().toString());
assp = Float.parseFloat(assignment.getText().toString());
atp = Float.parseFloat(attendence.getText().toString());
ttper = ((i1m / 10) + (i2m / 10) + ((mm / 100) * 15) + (assp) + ((atp >= 75.0f) ? ((atp - 75) / 5) : 0.0f));
//setValues();
startActivity(intent);
//}
//catch (Exception e) {
// Log.e("app crash",e.getMessage());
//}
}
});
}
/*void setValues()
{
/* i1m = Float.parseFloat(String.valueOf(i1.getText()));
i2m = Float.parseFloat(i2.getText().toString());
mm = Float.parseFloat(model.getText().toString());
assp = Float.parseFloat(assignment.getText().toString());
atp = Float.parseFloat(attendence.getText().toString());*/
}/*
float getPercent()
{
//float ttper=50.0f;
return ttper;
}
}
public class Main2Activity extends AppCompatActivity {
float tper=1.0f;
String str;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
TextView v1 = (TextView) findViewById(R.id.textView11);
MainActivity m1 = new MainActivity();
//m1.setValues();
//try {
str = String.valueOf(m1.getPercent()) + "%";
v1.setText(str);
//}
//catch (Exception e) {
// Log.e("app crash",e.getMessage());
//}
}
}
您有一个MainActivity实例,它有一个变量ttper。您可以修改该值。 然后在另一个类Main2Activity中创建MainActivity的新实例并尝试获取该值,但ttper具有默认值,因为这是一个新实例,尚未修改 您可以将ttper定义为静态:
static float ttper=999;
甚至可以将函数getPercent()定义为静态函数,这样就不必创建此类的新实例来获取值。您只需调用MainActivity.getPercent()
有关更多信息,请阅读:
无论如何,这不是将数据从一个活动传递到另一个活动的正确方式。您应该遵循以下准则:它不能工作。如果创建
newmainActivity()
,则ttper
将为999
你应该这样做:
ttper
放入Intent:Intent.putExtra(“ttper”,ttper)代码>
MainActivity2
中使用getIntent()代码>
您应该在活动之间使用附加功能来传递数据。也许您应该取消对内容的注释您不应该使用
new
来创建活动类的实例请将问题标记为重复项从您那里学到了关于静态的新东西!我知道这个定义,但不知道我到底在做什么。谢谢