Java 我如何从一个活动中访问一个方法并将其用于Android中的另一个活动?

Java 我如何从一个活动中访问一个方法并将其用于Android中的另一个活动?,java,android,android-activity,Java,Android,Android Activity,我有一个名为的班级,我有 public class iHave extends ActionBarActivity { //below is the instance for calling the method from the other activity. (The name of the other activity is **iThank**) **iThank thankYou = new iThank();** @Override protected void onC

我有一个名为的班级,我有

public class iHave extends ActionBarActivity
{   

//below is the instance for calling the method from the other activity. 
(The name of the other activity is **iThank**)

**iThank thankYou = new iThank();**

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_i_have);

    Button button = (Button) findViewById(R.id.button);

    button.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v)
        {
            **//this is the method I want to access from iThank class** **strong text**
            thankYou.display();
        }
    });       
} 
//下一节课是“iThank”

我如何将iTank活动的“
public void display()
”方法用于“iHave”活动?它总是给我一个
NullPointerException
错误。请帮忙。多谢各位

如何从一个活动访问一个方法并将其用于另一个活动 Android中的活动

通过创建对象让其他人从活动中访问方法是正确的方法

用于在应用程序组件之间进行通信

1.
i发送广播在按钮上单击:

@Override
   public void onClick(View v)
     {
       Intent intent = new Intent("DISPLAY_EVENT");
       LocalBroadcastManager.getInstance(v.getContext()).sendBroadcast(intent);
     }
2.
iTank
活动中注册
LocalBroadcastManager

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    LocalBroadcastManager.getInstance(this).registerReceiver(ReceiveMessage,
            new IntentFilter("DISPLAY_EVENT"));
}
private BroadcastReceiver ReceiveMessage = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
             display();
        }
    };
3.
iThank
活动中创建
BroadcastReceiver
对象和调用display()方法:

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    LocalBroadcastManager.getInstance(this).registerReceiver(ReceiveMessage,
            new IntentFilter("DISPLAY_EVENT"));
}
private BroadcastReceiver ReceiveMessage = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
             display();
        }
    };
还为TextView添加空签入显示方法:

public void display()
{   
   if(txtThank !=null)
    txtThank.setText ("Shine");
}

请不要这样做,这不是活动的目的。您可能需要先看一看,然后开始。如果您想从当前前台活动(例如,
iHave
)启动新活动(例如,
iTank
),则从不直接自己实例化类,并且始终。如果您有数据要传递(例如要显示的消息),则需要将其作为额外的目的捆绑在一起(请参见相同的链接)

活动不应该直接调用彼此的方法,因为这需要它们相互引用。该框架独立地管理每个活动的生命周期,这些引用可能导致泄漏