简体   繁体   中英

Android: startChildActivity (tabgroupactivity) close the app

I have this code:

public class IntroInventario extends Activity{
@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.intro_inventario);
    final Database db=new Database(this);
    db.open(); 
    Cursor password=db.dammi_password();
    final EditText inserisci=(EditText) findViewById(R.id.inserisci_password);
    Button entra_inventario=(Button) findViewById(R.id.entra_inventario);
    TextView dimenticata=(TextView) findViewById(R.id.dimenticata_password);
    final Toast toast=new Toast(this);
    while(password.moveToNext()){
        if(password.getString(password.getColumnIndex("password")).equals("")){
            // primo accesso
            TabGroupActivity parentActivity = (TabGroupActivity)getParent();
            Intent intent = new Intent(IntroInventario.this, InventarioNoPassword.class);
            finish();
            parentActivity.startChildActivity("InventarioNoPassword",intent);
        }
    }
    db.close();
    // inserisci password
    entra_inventario.setOnClickListener(new OnClickListener(){
        public void onClick(View v){
            db.open(); 
            Cursor password_2=db.dammi_password();
            while(password_2.moveToNext()){
                if(inserisci.getText().toString().equals(password_2.getString(password_2.getColumnIndex("password")))){
                    TabGroupActivity parentActivity = (TabGroupActivity)getParent();
                    Intent intent = new Intent(getParent(), Inventario.class);
                    finish();
                    parentActivity.startChildActivity("Inventario",intent);
                }else{
                    Toast.makeText(IntroInventario.this,"Password sbagliata",Toast.LENGTH_LONG);
                    toast.show();
                }
            }
            db.close();
        }
    });
    // password dimenticata
    dimenticata.setOnClickListener(new OnClickListener(){
        public void onClick(View v){
            TabGroupActivity parentActivity = (TabGroupActivity)getParent();
            Intent intent = new Intent(getParent(), InventarioDimenticata.class);
            finish();
            parentActivity.startChildActivity("InventarioDimenticata",intent);
        }
    });
}
}

the problem is that, if i'm in "// primo accesso", the app close itself instead of going to InventarioNoPassword.class. It's strange because in my other projects it works.

The logcat tells: 12-07 12:43:46.756: W/InputManagerService(60): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@406705e8 (uid=10037 pid=649)

it is better to finish your current running activity inside onPause() method. Do not use finish() method generally inside button click . Use finish method like this . it may solve your problem

    @Override
public void onPause() {
    super.onPause();
    finish();
}   

then in place of this

TabGroupActivity parentActivity = (TabGroupActivity)getParent();
        Intent intent = new Intent(getParent(), InventarioDimenticata.class);
        finish();
        parentActivity.startChildActivity("InventarioDimenticata",intent);

use this code it may help you

                Intent intent = new Intent();
            intent.setClass(getBaseContext(), InventarioDimenticata.class);
            startActivity(intent);              

i face similar kind of problem not sure its same but when we call finish(); before startActivity app goes in background.

so first call parentActivity.startChildActivity("Inventario",intent); then finish();

try and give me output please.

您同时使用正常意图和父项意图,请使用一种,因为您正在使用标签组活动

You need to extend your class to TabGroupActivity

  public class IntroInventario extends TabGroupActivity{

or else you need to create a object referencing to the TabGroupActivity class and then use the methods in that class ie your startChildActivity()

Hope this helps.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM