我如何从android中的另一个类调用方法?

时间:2012-05-30 05:17:05

标签: android

我有两个问题。两者都扩展了Activity。

A类

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

在B组中:如果按下BACK按钮,我想在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屏幕上创建的布局上添加了自己的后退按钮 - 而不是使用键盘上的常规“后退”按钮。可能是那个问题。

6 个答案:

答案 0 :(得分:2)

如果A类和B类都是活动,而B类活动是从A类活动开始的,那么你应该只完成()B类活动,然后你应该返回A类并保留其状态。

我不确定你是否在问这个,因为这似乎是一个非常基本的android活动流程。

答案 1 :(得分: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

答案 2 :(得分: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));

    }

答案 3 :(得分: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

答案 4 :(得分:0)

最后我弄清楚出了什么问题。 从每个活动开始,我在通过Intent机制调用下一个活动之前调用了finish()。 因此,当从不同的活动中按下“后退”按钮时,没有什么可去的。 因此APP曾经崩溃。

感谢各种回复。 非常感激。 与往常一样,从每个回应中学到新的东西。

我通过删除需要存在的活动中的finish()来修复它。 我没有必要重新做或重建UI(甚至是动态按钮)。 : - )

答案 5 :(得分:-1)

b类中的

添加

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

如果您希望灵活处理视口,我会使用interfase或扩展名。

在Class a中,在你之前控制你需要将'this'添加到b类。