android-如何使现有片段实现活动';谁是听众?
我从一个片段->活动开始。在活动中,我创建了一个接口,当用户单击按钮时,我将字符串传递给接口对象,创建并调用finish()。在片段中,我实现了该接口,并希望获得该字符串。但是在活动中,我得到一个崩溃,说侦听器是空的android-如何使现有片段实现活动';谁是听众?,android,android-fragments,android-activity,interface,listener,Android,Android Fragments,Android Activity,Interface,Listener,我从一个片段->活动开始。在活动中,我创建了一个接口,当用户单击按钮时,我将字符串传递给接口对象,创建并调用finish()。在片段中,我实现了该接口,并希望获得该字符串。但是在活动中,我得到一个崩溃,说侦听器是空的 public class SampleActivity extends AppCompatActivity { private Button button; private MatchActivity.OnMatchCompleteListener onMatch
public class SampleActivity extends AppCompatActivity
{
private Button button;
private MatchActivity.OnMatchCompleteListener onMatchCompleteListener;
public interface OnMatchCompleteListener
{
public void matchComplete(String matchID);
}
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.someButton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onMatchCompleteListener.matchComplete("finished");
finish();
}
});
}
}
碎片
public class SampleFragment extends Fragment implements SampleActivity.OnMatchCompleteListener{
private View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.fragment_login , container, false);
return rootView;
}
@Override
public void matchComplete(String matchID) {
Log.d("TEST",matchID);
}
}
如果您在
R.layout.activity\u main
中有您的片段,并且您的片段id是R.id.fragment
请使用以下命令:
onMatchCompleteListener =
((SampleFragment)getFragmentManager().findFragmentById(R.id.fragment))
否则,请使用此解决方案:
SampleFragment fragment = new SampleFragment();
onMatchCompleteListener = fragment;
getFragmentManager().beginTransaction().add(R.layout.activity_main, fragment, "TAG_SIMPLE").commit();
该片段不在ActivityAddSecondSolutiontoActivity的onCreate()方法中