java - 不确定如何解决 IllegalStateException:在 Android:Java 应用程序的父级或祖先上下文中找不到方法 storeEmail(View)
问题描述
这是我看到的完整例外,对于标题来说太大了
java.lang.IllegalStateException:无法在父或祖先上下文中找到方法 storeEmail(View) 为 android:onClick 属性定义在视图类 com.google.android.material.button.MaterialButton 与 id 'confirmFrag'
我正在尝试将片段中的一些数据发送回它的父活动。我对 Android 开发非常陌生,并且在意图和片段以及传递数据的一般方式方面遇到了很多困难。我原以为下面的代码最终是票,但似乎不是。
这是片段代码
public class EmailFragment extends Fragment {
EmailCreated activity;
public interface EmailCreated {
String onEmailCreated(Bundle emailBundle);
}
public EditText subjectLineFrag, emailFrag;
public String emails, subject;
public Button confirmFrag;
public Bundle emailBundle;
@Nullable
@org.jetbrains.annotations.Nullable
@Override
public View onCreateView(@NonNull @NotNull LayoutInflater inflater, @Nullable @org.jetbrains.annotations.Nullable ViewGroup container, @Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.email_fragment, container, false);
emailFrag = view.findViewById(R.id.emailFrag);
subjectLineFrag = view.findViewById(R.id.subjectLineFrag);
confirmFrag = view.findViewById(R.id.confirmFrag);
return view;
}
public Bundle storeEmail(View v, EditText subjectLineFrag, EditText emailFrag) {
String emails = emailFrag.getText().toString();
String subject = subjectLineFrag.getText().toString();
emailBundle.putString("message", emails);
emailBundle.putString("subject", subject);
return emailBundle;
}
@Override
public void onAttach(@NonNull @NotNull Context context) {
//context will refer to the attached activity
super.onAttach(context);
activity = (EmailCreated) context;
}
@Override
public void onCreate(@Nullable @org.jetbrains.annotations.Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
//Implement Fragment Lifecycle
@Override
public void onStart() {
super.onStart();
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onStop() {
super.onStop();
}
@Override
public void onDestroyView() {
super.onDestroyView();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public void onAttach(@NonNull @NotNull Activity activity) {
super.onAttach(activity);
}
@Override
public void onDetach() {
super.onDetach();
}
}
最初我已将变量声明为私有但我在这里读到将它们公开可能有效但没有雪茄
这是它所附加的活动的代码,非常简单,试图先做片段
public class GuestActivity2 extends AppCompatActivity implements EmailFragment.EmailCreated {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_guest2);
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.replace(R.id.container, new EmailFragment());
transaction.commit();
}
@Override
public String onEmailCreated(Bundle emailBundle) {
return null;
}
}
我不知道为什么这不起作用。我试图在活动中创建该方法,因为我认为这是消息告诉我要做的,但它未被识别。更改变量不起作用。我还没有尝试对 Bundle 做任何事情,所以也许就是这样?我有点失落
解决方案
推荐阅读
- c++ - 具有特定旋转次数的数组旋转
- react-native - react-native 如何将功能组件的方法用于类组件?
- wordpress - 如何阻止通过浏览器访问文件目录?
- svn - 文件/文件夹“已经在版本控制下”
- jquery - Asp.net jQuery Ajax - 无法从 img 标签传递图像数据
- sql - 使用 int identity(1,1) 作为连接临时表的一种方式
- javascript - 为什么刷新页面后我的 WebSocket 连接关闭?
- c# - 在实体框架中将 IDENTITY_INSERT 设置为 OFF 时无法插入显式值
- r - 如何从 R/Tidyverse 中的整洁数据生成不整洁的表格?
- python - Python:读取其中一列包含多个逗号的csv文件