Android:startChildActivity(tabgroupactivity)关闭应用

时间:2012-12-07 11:49:21

标签: android android-intent tabs

我有这段代码:

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);
        }
    });
}
}

问题是,如果我在“// primo accesso”中,应用程序会自行关闭而不是转到InventarioNoPassword.class。 这很奇怪,因为在我的其他项目中它起作用。

logcat告诉: 12-07 12:43:46.756:W / InputManagerService(60):在非聚焦客户端上启动输入com.android.internal.view.IInputMethodClient$Stub$Proxy@406705e8(uid = 10037 pid = 649)

3 个答案:

答案 0 :(得分:1)

最好在 onPause() 方法中完成当前的运行活动。一般不在按钮点击内使用 finish() 方法。使用这样的完成方法。它可以解决你的问题

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

然后代替这个

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

使用此代码可能会对您有所帮助

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

答案 1 :(得分:0)

我遇到类似的问题,不确定是否相同,但是当我们调用finish()时;在startActivity app进入后台之前。

首先致电parentActivity.startChildActivity("Inventario",intent); 然后finish();

请尝试给我输出。

答案 2 :(得分:0)

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