-2

問題のクラスが 2 つあります。どちらもアクティビティを拡張します。

クラスA

public void displayinfo() 
{
setContentView(R.layout.dynamicinfo);
//Add some buttons dynamically here
//do some processing
// move on to Class B
}

クラス B: 戻るボタンが押された場合、UI でクラス A の状態に戻りたい。

クラスB

//Register a listener for this button
Backbutton.setOnClickListener(new OnClickListener() 
{
public void onClick(View arg0)
{
Log.i("setOnClickListener", "Pressed Back Button ");
Toast.makeText(mycontext, "Pressed Back Button", Toast.LENGTH_SHORT).show();
//HERE I want to go back class's function in UI as well as restoring the sttae for that screen.
}

それ、どうやったら出来るの?私はいくつかの質問を見回しました。彼らは私が探しているものを明確に答えませんでした。

ありがとう。クラス B の UI 画面で作成したレイアウトに、キーボードの通常の「戻る」ボタンを使用せずに、独自の「戻る」ボタンを追加していたと思います。それが問題だったのかもしれません。

4

6 に答える 6

2

クラス A とクラス B の両方がアクティビティであり、クラス B のアクティビティがクラス A のアクティビティから開始される場合、クラス B のアクティビティのみを終了し、その状態を保持してクラス A に戻る必要があります。

これは非常に基本的な Android アクティビティ フローのように見えるため、これを尋ねているかどうかはわかりません。

于 2012-05-30T05:26:09.460 に答える
1

クラス A :

public void displayinfo() 
{
setContentView(R.layout.dynamicinfo);
//Add some buttons dynamically here
//do some processing
// move on to Class B

/*For starting activity B use this code*/
Intent in=new Intent(this,CalssB.class);
startActivity(in);

}

クラス B では、アクティビティ B のコードを完了する必要があります。

Backbutton.setOnClickListener(new OnClickListener() 
{
public void onClick(View arg0)
{
Log.i("setOnClickListener", "Pressed Back Button ");
Toast.makeText(mycontext, "Pressed Back Button", Toast.LENGTH_SHORT).show();

/* This  will finish current activity B and back to activity A with same state.*/
finish();
}

詳細については、このリンクを参照してください。 http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

于 2012-05-30T05:26:53.237 に答える
0

次のコードは、戻るボタンが押されたときにアクティビティをクラス B からクラス A にナビゲートするのに役立ちます。

ClassA.java

/***********/
startActivity(new Intent(ClassA.this,CalssB.class);

ClassB.java

   @Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub

    if(keyCode == KeyEvent.KEYCODE_BACK)
    {
        finish();
         //startActivity(new Intent(ClassB.this,ClassA.class));
         Toast.makeText(getApplicationContext(), "Backbutton pressed", 30).show();
    }
    return super.onKeyDown(keyCode, event);
   }

このコードは戻るボタンに使用されます....ボタンをクリックしてページを ClassA に移動する必要がある場合は、以下のコードのいずれかを使用することを意味します..

ClassB.java

  btn.onClick(){

        finish(); 
          (or)
         startActivity(new Intent(ClassB.this,ClassA.class));

    }
于 2012-05-30T05:27:06.620 に答える
0

どのように正確に移動ClassBますか? ClassBでに移動できますIntent

public void displayinfo() 
{
  setContentView(R.layout.dynamicinfo);

  //move on to Class B like this:
  Intent k = new Intent(this, ClassA.class);
  startActivity(k);
}

に移動して[戻るClassB] ボタンを押すと、自動的に に移動します。ClassA

于 2012-05-30T05:28:28.603 に答える
0

最後に、何が間違っているのかを理解しました。各アクティビティから、Intent メカニズムを介して次のアクティビティを呼び出す前に、finish() を呼び出していました。そのため、さまざまなアクティビティから [戻る] ボタンを押しても、何も表示されませんでした。そのため、アプリがクラッシュしていました。

親切なご回答ありがとうございます。とても有難い。いつものように、それぞれの反応から何か新しいことを学びました。

存在する必要があるアクティビティの finish() を削除して修正しました。UI (動的ボタンも) をやり直したり再構築したりする必要はありませんでした。:-)

于 2012-06-01T04:35:06.713 に答える
-1

クラスbで追加

function addReturn(ClassA back){
// back.take over the control
}

ビューポートに柔軟に対応したい場合は、インターフェイスまたは拡張機能を使用します。

クラス a では、制御を渡す前に、「this」を b クラスに追加する必要があります。

于 2012-05-30T05:24:01.767 に答える