java - 使用键在活动之间传递值
问题描述
我正在尝试创建一个应用程序来检查您输入的 2 个数字中的哪个数字较大,并在另一个活动中显示结果。
我也尝试使用 getIntExtra() ,但它没有用,也没有错误,它只是不起作用。
主要活动:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button check=findViewById(R.id.checkButton);
check.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent Check=new Intent(getApplicationContext(), BiggerNum.class);
EditText N1EditText=findViewById(R.id.editTextN1);
int num1=Integer.parseInt(N1EditText.getText().toString());
EditText N2EditText=findViewById(R.id.editTextN2);
int num2=Integer.parseInt(N2EditText.getText().toString());
Check.putExtra("com.example.testapp.num1",num1);
Check.putExtra("com.example.testapp.num2",num2);
startActivity(Check);
}
});
}
}
第二个活动:
public class BiggerNum extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
if (getIntent().hasExtra("com.example.testapp.num1")){
int num1=getIntent().getExtras().getInt("num1");
int num2=getIntent().getExtras().getInt("num2");
TextView bigger=findViewById(R.id.biggerNView);
bigger.setText((Math.max(num1,num2)));
}
}
}
编辑:我的代码中的问题是forpas解释的。无论如何,使用键的更好方法是将键创建为您将传递给的类中的静态决赛,然后使用它们:
public class BiggerNum extends AppCompatActivity {
public static final String FIRST_NUM_KEY = "num1";
public static final String SECOND_NUM_KEY= "num2";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
int num1= 0;
int num2 = 0;
if (getIntent().hasExtra(FIRST_NUM_KEY)){
int num1 = getIntent().getExtras().getInt(FIRST_NUM_KEY);
}
if (getIntent().hasExtra(SECOND_NUM_KEY)){
int num1 = getIntent().getExtras().getInt(SECOND_NUM_KEY);
}
TextView bigger=findViewById(R.id.biggerNView);
bigger.setText((Math.max(num1,num2)));
}
}
解决方案
2 个附加项的键是"com.example.testapp.num1"
and "com.example.testapp.num2"
,因此您必须使用它们来检索它们,而不是"num1"
and "num2"
:
if (getIntent().hasExtra("com.example.testapp.num1") && getIntent().hasExtra("com.example.testapp.num2")){
int num1=getIntent().getExtras().getInt("com.example.testapp.num1");
int num2=getIntent().getExtras().getInt("com.example.testapp.num2");
TextView bigger=findViewById(R.id.biggerNView);
bigger.setText(String.valueOf(Math.max(num1,num2)));
}
推荐阅读
- apache-camel - 如何编写有关多个输入的 Spring XML
- sql - 如何连接来自三个不同别名的字符串值并在 SQL Server 中找到最小值
- r - 我相信我的 If 语句的语法错误
- javascript - 如何从 pupeteer 抓取的表中输出正确的 json?
- android - 单击listview项目时如何显示admob插页式广告?
- javascript - 在这个例子中试图理解三元条件逻辑
- python - 使用 SQLAlchemy Postgres 批量更新
- python - 使用 python 时如何在 Visual Studio 中读取标准输入?
- swift - 如何退出没有正则表达式匹配的函数
- python - 无法在python上打开文件