在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 中初始化 Firebase Analytics?