Android 以下哪项是实现回调的正确方法。
所以我提出了一个问题。这两种方法中哪一种是进行回调的正确方法?(除非这两种方法都不正确)还是取决于具体情况 比如说。假设我想将某个片段中的某个内容返回到它的活动中 1) 我在片段中实现一个接口,然后在其onAttach上设置侦听器,然后在活动中实现该接口Android 以下哪项是实现回调的正确方法。,android,interface,Android,Interface,所以我提出了一个问题。这两种方法中哪一种是进行回调的正确方法?(除非这两种方法都不正确)还是取决于具体情况 比如说。假设我想将某个片段中的某个内容返回到它的活动中 1) 我在片段中实现一个接口,然后在其onAttach上设置侦听器,然后在活动中实现该接口 public class UrgentCareFragment{ public interface TestListener { void finishedTest(); } TestListener
public class UrgentCareFragment{
public interface TestListener {
void finishedTest();
}
TestListener mEventListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_urgent_care_viewpager_fragment, container, false);
mEventListener.finishedTest();
return v;
}
@TargetApi(23)
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
mEventListener = (TestListener) context;
} catch (ClassCastException e) {
throw new ClassCastException(context.toString() + " must implement urgentCareListener");
}
}
/*
* Deprecated on API 23
* Use onAttachToContext instead
*/
@SuppressWarnings("deprecation")
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (Build.VERSION.SDK_INT < 23) {
try {
mEventListener = (TestListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement urgentCareListener");
}
}
}
}
2) 我创建了一个接口类。在片段中,我使用getActivity将侦听器设置为活动上下文。然后在活动中实现接口
public class UrgentCareFragment{
public interface TestListener {
void finishedTest();
}
TestListener mEventListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_urgent_care_viewpager_fragment, container, false);
mEventListener.finishedTest();
return v;
}
@TargetApi(23)
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
mEventListener = (TestListener) context;
} catch (ClassCastException e) {
throw new ClassCastException(context.toString() + " must implement urgentCareListener");
}
}
/*
* Deprecated on API 23
* Use onAttachToContext instead
*/
@SuppressWarnings("deprecation")
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
if (Build.VERSION.SDK_INT < 23) {
try {
mEventListener = (TestListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement urgentCareListener");
}
}
}
}
接口类
public interface TestListener {
void finishedTest();
}
碎片
public class UrgentCareFragment{
TestListener mEventListener;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mEventListener = (TestListener) getActivity();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_urgent_care_viewpager_fragment, container, false);
mEventListener.finishedTest();
return v;
}
}
活动课
public class testActivity extends AppCompatActivity implements TestListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_urgent_care);
}
@Override
public void finishedTest(){
//do what you need to do
}
}
public class testActivity extends AppCompatActivity implements TestListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_urgent_care);
}
@Override
public void finishedTest(){
//do what you need to do
}
}
哪种方法正确?我主要关心的是听众的设置方式。这两个问题中的任何一个都可能导致问题。还是有一个我应该扔掉。两者似乎都能正常工作,我只是想确定正确的方法是什么,或者两者是否都可以
谢谢嗯,我有点困惑。我在第一种方法中没有做同样的事情。每当点击这一行时,mEventListener=(TestListener)上下文。谢谢,我还是有点困惑。假设我在另一个片段中使用了第二个实现。我不应该创建另一个TestListener,然后让它的活动实现TestListener吗?所以我不确定我是否理解我将在哪一个特定的活动中施展才能。谢谢你的帮助,让我们假设我有一个类,一件事,这不是一个活动或片段。这个东西做了一些计算,我在它里面有一个TestListener listenerThing对象。我有一个方法,它有一个叫做setListener的方法,用来设置listenerThing。然后在我的一个活动或片段中,我有一个名为thingTest的对象。这个活动/片段实现了TestListener。在我的活动/片段中,我做thingTest.setListener(这个)。这里指的是活动/片段。这样行吗?谢谢。我有点困惑。我在第一种方法中没有做同样的事情。每当点击这一行时,mEventListener=(TestListener)上下文。谢谢,我还是有点困惑。假设我在另一个片段中使用了第二个实现。我不应该创建另一个TestListener,然后让它的活动实现TestListener吗?所以我不确定我是否理解我将在哪一个特定的活动中施展才能。谢谢你的帮助,让我们假设我有一个类,一件事,这不是一个活动或片段。这个东西做了一些计算,我在它里面有一个TestListener listenerThing对象。我有一个方法,它有一个叫做setListener的方法,用来设置listenerThing。然后在我的一个活动或片段中,我有一个名为thingTest的对象。这个活动/片段实现了TestListener。在我的活动/片段中,我做thingTest.setListener(这个)。这里指的是活动/片段。这样行吗?谢谢