簡體   English   中英

當我按回按鈕時,我的應用程序停止工作

[英]When I press the button back, my application stops working

下午好,我有一個應用程序,它有一個菜單活動,並與其他 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() 中,您必須檢查您的結果代碼是否正常,如果有人沒有 select 任何它不會拋出任何東西試試這個:

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.
         }
       
 }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM