【问题标题】:How to I can call a method from another activity with passing data?如何通过传递数据从另一个活动调用方法?
【发布时间】:2013-01-17 21:51:43
【问题描述】:

我有 2 项活动。 我开始一个,然后我开始另一个:

 Intent enabler = new Intent(this, cprompt.class);
        startActivity(enabler);

我想从旧方法中调用一个方法,但我也想传递一些数据。

这就是我尝试的方式:

Activity1.sendcommand(DATA);

我得到了这个:

Cannot make a static reference to the non-static method sendcommand(String) from the type Activity1

而且我不想将方法更改为静态。 如果我做一个听众的唯一方法?如果必须的话,你可以帮我描述一下怎么做?

java 对我来说是新的... :/ 但是如果这个问题得到解决,我想我的程序就完成了 :)

【问题讨论】:

  • 他们说不要从其他活动中调用方法,因为它们是 UI,如果不在前面它们就没有生命。在简单的类中定义方法。使用 dataStructe 定义数据和所有。学习Android基础知识,将来会有所帮助。干杯

标签: java android function methods


【解决方案1】:

一次只有一个活动处于活动状态。您是否只是因为要传递一些数据而尝试触发该方法?您可以通过Intent

Intent intent = new Intent(this, SecondActivity.class);
intent.putExtra("YOUR_DATA_KEY", "Data Value");
startActivity(intent); 

SecondActivity 中,您可以检索数据并对其进行处理

String data = getIntent().getStringExtra("YOUR_DATA_KEY");

您可以通过这种方式发送的不仅仅是字符串。您甚至可以发送SerializableParcelable Extras。欲了解更多信息,请参阅 - Intents on Android Developer Website

【讨论】:

  • 我解决了,但是因为我在 OOP 方面有一点经验,尤其是在 JAVA 方面,我想我可以解决如果我只是调用一个方法并在其中传递一个数据并执行我想要的方法将返回,但现在我知道这个方法是否在另一个活动中我不能这样做......:/
【解决方案2】:

您可以声明一个interface 并使Activity1 实现该接口..
那么当需要调用Activity1的方法时调用inetrface的方法...

你的界面:

public interface OnSendCommand{
    public void onSendCommand(values);
}

活动1:

public Activity1 implements OnSendCommand {
    public void onSendCommand(values){}
}

【讨论】:

    【解决方案3】:

    执行此方法时,您是否从第二个活动返回到第一个活动?如果是这样,您可以按照this 教程使用 startActivityForResult() 。如果不是,那么如果这个方法不能是静态的,那么你的应用程序的结构有问题,并且这个方法应该在一个单独的类中,而不是从 Activity 继承。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-31
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多