我有第一个名为 iHave
的班级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"
public class iThank extends ActionBarActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_i_thank);
txtThank = (TextView) findViewById(R.id.textView3);
//this is the method I want to access/use from iHave Activity
public void display()
{
txtThank.setText ("Shine");
}
}
我如何使用方法" public void display()
" iThank活动对" iHave"活动?它总是给我一个NullPointerException
的错误。请帮忙。非常感谢你!
答案 0 :(得分:1)
如何从活动中访问方法并将其用于另一个方法 Android中的活动?
通过Activity创建对象访问其他方法是正确的方法。
使用LocalBroadcastManager进行应用程序组件之间的通信。
1。在点击按钮上发送来自iHave
的广播:
@Override
public void onClick(View v)
{
Intent intent = new Intent("DISPLAY_EVENT");
LocalBroadcastManager.getInstance(v.getContext()).sendBroadcast(intent);
}
2。在LocalBroadcastManager
活动中注册iThank
:
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
LocalBroadcastManager.getInstance(this).registerReceiver(ReceiveMessage,
new IntentFilter("DISPLAY_EVENT"));
}
3。创建BroadcastReceiver
对象并在iThank
活动中调用display()方法:
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");
}
答案 1 :(得分:1)
请不要这样做,这不是活动的目的。您可能需要查看Activities Developer Guide才能开始使用。如果您要从当前前台活动(例如iThank
)启动新活动(例如iHave
),您 从不 自行实例化该课程直接 始终 launch it using an intent。如果您要传递数据(例如要显示的消息),则需要将其与意图捆绑在一起(请参阅相同的链接)。
活动不应该直接相互调用方法,因为这需要它们相互引用。该框架独立管理每个活动的生命周期,这些参考可能导致泄漏。