在Activity中初始化接口

Posted

技术标签:

【中文标题】在Activity中初始化接口【英文标题】:Initialize interface in Activity 【发布时间】:2018-02-05 13:05:06 【问题描述】:

我的界面

public interface Baseface 

    public void updatedName(String newName);

MainActivity

public class MainActivity extends AppCompatActivity 

private Baseface baseface;

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    baseface = (Baseface) this;
    baseface.updatedName("hello");

   Intent i = new Intent(MainActivity.this, SecondActivity.class);
   startActivity(i);
   

第二活动

public class SecondActivity extends AppCompatActivity implements Baseface 

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



@Override
public void updatedName(String newName) 
    Log.e("my new name is:",newName);

我出错了

  Caused by: java.lang.ClassCastException. MainActivity cannot be cast to Baseface

【问题讨论】:

好好学习一下界面吧。 ericlippert.com/2014/03/05/how-to-debug-small-programs 使用接口在Activity之间进行通信是错误的做法。 【参考方案1】:

MainActivity 必须实现 Baseface 才能使转换成功。

public class MainActivity extends AppCompatActivity implements Baseface
   ...

【讨论】:

【参考方案2】:

试试这个让你的MainActivity实现Baseface,这样MainActivity就可以转换成Baseface

喜欢这个

public class MainActivity extends AppCompatActivity implements Baseface 
    private Baseface baseface;

@Override
protected void onCreate(Bundle savedInstanceState) 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    baseface = (Baseface) this;
    baseface.updatedName("hello");

   Intent i = new Intent(MainActivity.this, SecondActivity.class);
   startActivity(i);
   


如果您想将数据从一个活动传递到其他活动,您可以在代码下方传递数据intent

在主活动中使用 putExtra() 方法通过 intent 发送数据

Intent i = new Intent(MainActivity.this, SecondActivity.class);
i.putExtra("data", "hello");
startActivity(i);

现在像这样在您的SecondActivity 中接收

Intent intent = getIntent();
String data = intent.getStringExtra("data");

【讨论】:

以上是关于在Activity中初始化接口的主要内容,如果未能解决你的问题,请参考以下文章

在 Activity 中初始化 Loader

是否有必要在每个 Activity 中初始化 Firebase Analytics?

Android - Activity 和 Fragment 初始化

1.activity

Android app后台回到前台时的监听

android activity中监听View测量完成的4种方式