下午好,我有一个应用程序,该应用程序的活动是菜单,并且与其他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();
}
});
}
}
}
答案 0 :(得分:0)
在您的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.
}
}