【问题标题】:get value from activity using Interface in Android在 Android 中使用接口从活动中获取价值
【发布时间】:2016-08-09 11:28:28
【问题描述】:

我有一个带有 doLogin() 方法的活动类,如下所示:

public class LoginActivity extends AppCompatActivity {
  public void doLogin(final String email, String url) {
    asyncThread = new Thread() {
        @Override
        public void run() {
            String username = email;
            //.......
  }
}

我将使用我的自定义 SDK 的接口,所以其他应用程序。可以使用接口/回调将值“email”和“url”发送到LoginActivity.doLogin(),请给我一个例子。

谢谢。

【问题讨论】:

    标签: android methods interface


    【解决方案1】:

    有很多方式:事件总线,通过全局对象(应用程序类),通过保留片段,..

    但标准方法是使用 Intents。

    在登录活动中:

    String mymail = "email";
    String myurl = "some/url";
    Intent intent = new Intent(LoginActivity.this, OtherActivity.class);
    intent.putExtra(OtherActivity.MAIL_KEY, mymail);
    intent.putExtra(OtherActivity.URL_KEY, myurl);
    startActivity(intent);
    

    在OtherActivity中提取数据:

    ...
    public static final String MAIL_KEY = "my.app.package.mail_key";
    public static final String URL_KEY = "my.app.package.url_key";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        String mymail = getIntent().getExtras().getString(MAIL_KEY);
        String myurl = getIntent().getExtras().getString(URL_KEY);
    

    【讨论】:

    • 你愿意给我一个使用意图的例子吗?
    【解决方案2】:

    您不会通过 2 个活动之间的接口来执行此操作。您可以将它们作为参数发送到用于启动活动的意图中。或者,如果其他活动启动了您,您会将它们作为结果意图中的附加内容返回。您永远不会使用接口在活动之间进行对话。

    【讨论】:

    • 我会将此接口与我的自定义 SDK 一起使用,其他应用程序也会如此。可以将我的 doLogin() 方法与回调电子邮件参数一起使用
    • 没关系。如果不做你不应该做的丑陋的黑客攻击,你就无法访问另一个活动的引用。与另一个活动交谈的唯一正确方法是通过 Intent。现在,您可以创建工厂方法来轻松创建意图并根据需要隐藏详细信息。
    • 有没有其他不使用意图的方法?我想将其他类(活动/片段/等)的参数传递给我的类(活动/片段/等)
    猜你喜欢
    • 2015-04-23
    • 2021-03-07
    • 2022-09-02
    • 2010-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多