5

私は2つの活動をしています。1 つが呼び出されLogin、もう1 つが呼び出されListDealsました。Login送信ボタンのあるフォームがあり、これを押すとアクティビティが に切り替わりますListDeals。これは機能します。

ただし、Logcat では、アクティビティが開始されたことを示すメッセージが表示されません。また、 でListDealsユーザーが戻るボタンを押すと、両方のアクティビティが強制終了されます。私は周りを見回して、これが私が思いついたものです:

public class Login extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.login_screen);

    Button submit=(Button)findViewById(R.id.submit);
    submit.setOnClickListener(onSubmit);
}

private View.OnClickListener onSubmit=new View.OnClickListener() {

    @Override
    public void onClick(View view) {
        Intent myIntent=new Intent(view.getContext(),ListDeals.class );
        startActivityForResult(myIntent,0);

    }
};

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.login_screen, menu);
    return true;
}

@Override
public void onActivityResult(int requestCode,int resultCode, Intent data) {
    if(resultCode==2) {
        finish();
    } 
}

}

public class ListDeals extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.deals_list);
        System.out.println("starting activity");
    }

    @Override
    protected void onDestroy() {
        System.out.println("dude");
        setResult(2);
        super.onDestroy();


    }

    protected void onStop(){
        setResult(2);
        super.onStop();

    }

}

ただし、戻るボタンを押すと、目的Loginではないアクティビティに戻ります。

4

2 に答える 2

5

クリックハンドラーでonSubmit、次のようにログインアクティビティを終了します。そうすれば、それはアクティビティスタックに含まれなくなり、その結果、他のアクティビティからプッシュバックすると、ユーザーは開始した場所に戻ります。

private View.OnClickListener onSubmit=new View.OnClickListener()
{
    @Override
    public void onClick(View view)
    {
        Intent myIntent=new Intent(view.getContext(),ListDeals.class);
        startActivity(myIntent);
        finish();
    }
};

また、2番目の質問に対処するには、デバッグメッセージなどのLogクラスメソッドを使用します。これらのメソッドはlogcatに表示されます。Log.iLog.d

于 2012-07-11T21:45:05.220 に答える
1

新しいアクティビティを開始する前に、ログインを終了してください。その上、結果は必要ありません。

private View.OnClickListener onSubmit=new View.OnClickListener() {

    @Override
    public void onClick(View view) {
        Intent myIntent=new Intent(Login.this, ListDeals.class );
        startActivity(myIntent);
        Login.this.finish() // add this to finish it.

    }
};
于 2012-07-11T21:41:51.313 に答える