java - 当我按回按钮时,我的应用程序停止工作
问题描述
下午好,我有一个应用程序,它有一个菜单活动,并与其他 2 个活动(一个从列表中选择名称,另一个选择练习)进行通信。菜单和这些活动之间的数据传递工作正常。我遇到的问题是,例如,如果用户单击后退按钮而不是从列表中选择名称,则应用程序将停止工作并且在 logcat 中出现错误。在我有getStringExtra()的菜单活动行中;
如果有人知道如何解决它,我将不胜感激。
这是菜单活动的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
tv1=(TextView)findViewById(R.id.exercicitext);
tv2=(TextView)findViewById(R.id.jugadortext);
botoex = (Button)findViewById(R.id.botoexercici);
botoex.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openExercici();
}
});
botojug = (Button)findViewById(R.id.botojugador);
botojug.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LlistaJugadors();
}
});
botoini = (Button)findViewById(R.id.botoinici);
botoini.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
@Override
public void onClick(View v) {
openCountdown();
}
});
afegirjug = (Button)findViewById(R.id.botoafegirjugador);
afegirjug.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Afegirjugadors();
}
});
}
@RequiresApi(api = Build.VERSION_CODES.KITKAT)
public void openCountdown(){
Intent intent = new Intent(this,countdown.class);
if(Objects.equals(dada1,"Test Hexàgon")){
intent.putExtra("exercici", "1");
intent.putExtra("nom",dada2);
}
else if(Objects.equals(dada1,"Test Seqüència")){
intent.putExtra("exercici", "2");
intent.putExtra("nom",dada2);
}
startActivity(intent);
}
public void openExercici(){
Intent intent = new Intent(this,Hex_Seq.class);
startActivityForResult(intent,1);
}
public void Afegirjugadors(){
Intent intent = new Intent(this,Afegirjug.class);
startActivity(intent);
}
public void LlistaJugadors(){
Intent intent = new Intent(this,Llistajug.class);
startActivityForResult(intent,2);
}
public void onActivityResult(int requestCode, int resultCode, Intent data){
super.onActivityResult(requestCode,resultCode,data);
if(requestCode == 1){
dada1 = data.getStringExtra("dato1");
tv1.setText("Exercici - "+dada1);
u=u+1;
}
else if(requestCode == 2){
dada2 = data.getStringExtra("dato2");
tv2.setText("Jugador - "+dada2);
e=e+1;
}
if((u>=1)&&(e>=1)){
botoini.setEnabled(true); //Asigna valor false.
}
}
} `
这是显示名称列表的代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_llistajug);
Llistajugadors();
}
public void Llistajugadors(){
AdminSQLiteOpenHelper admin = new AdminSQLiteOpenHelper(this,"administracio",null,1);
SQLiteDatabase BaseDeDades = admin.getWritableDatabase();
if(BaseDeDades!=null){
Cursor c= BaseDeDades.rawQuery("select * from jugadors",null);
int quantitat = c.getCount();
int i=0;
String[] array = new String[quantitat];
if (c.moveToFirst()){
do{
String linia = c.getInt(0)+"-"+c.getString(1);
array[i] = linia;
i++;
}while(c.moveToNext());
}
ArrayAdapter<String>adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,array);
final ListView llista = (ListView)findViewById(R.id.llista);
llista.setAdapter(adapter);
llista.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = getIntent();
intent.putExtra("dato2", llista.getItemAtPosition(position).toString());
setResult(RESULT_OK,intent);
finish();
}
});
}
}
}
解决方案
在您的 onActivutyResult() 中,您必须检查您的结果代码是否正常,如果有人没有选择任何内容,它不会返回任何内容,请尝试以下操作:
public void onActivityResult(int requestCode, int
resultCode, Intent data){
super.onActivityResult(requestCode,resultCode,data);
If(result code== RESULT_OK){
if(requestCode == 1){
dada1 = data.getStringExtra("dato1");
tv1.setText("Exercici - "+dada1);
u=u+1;
}
else if(requestCode == 2){
dada2 = data.getStringExtra("dato2");
tv2.setText("Jugador - "+dada2);
e=e+1;
}
}
if((u>=1)&&(e>=1)){
botoini.setEnabled(true); //Asigna valor false.
}
}
推荐阅读
- r - 跳过上传数据集末尾的一些行
- java - MOXy XPath 解组元素为空
- c++ - 是否可以让函数从变量中的字符串而不是 C++ 中的变量名本身运行?
- sql - 坚持看似简单的 SQL dense_rank 任务
- pattern-matching - Raku 能否保证模式匹配是详尽的(在编译时)?
- laravel - Laravel:如何在数据透视表的显示视图中显示 CategoryTitle
- visual-studio-code - 当我尝试选择所有事件时,VS Code 插入控制台日志语句
- google-cloud-ml - 使用自定义容器进行训练时调用不同的入口点/模块
- sql - 一排或另一排,但不是两者
- c# - 发布多个 Azure 函数而不覆盖彼此的 dll