[英]How to open new Activity from a fragment java file by clicking the button on the fragment xml file?
我需要通过单击片段xml文件上的按钮来打开一个新活动。
我已经在片段Java文件中进行了一些编码,以通过单击片段XML文件上的按钮来调用新活动
当我运行应用程序时,它崩溃了
该行中的片段Java文件中出现了错误
“公共无效电子(视图)”
08-02 10:58:55.654 3519-3519/com.example.mohammadzakriya.tabhost E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.mohammadzakriya.tabhost, PID: 3519
java.lang.IllegalStateException: Could not find method electronics(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'button2'
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)
at android.view.View.performClick(View.java:5198)
at android.view.View$PerformClick.run(View.java:21147)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
XML格式
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".FolderScale">
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="1"
android:textAlignment="center" />
<Button
android:id="@+id/button2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:text="Electronics"
android:onClick="electronics"/>
</LinearLayout>
爪哇
public class TopfreeFragment extends Fragment {
public TopfreeFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment_topfree, container, false);
}
public void electronics(View view) {
Intent intent = new Intent(getActivity(),Electronicspage.class);
startActivity(intent);
}
}
您在onClick
内部使用electronics
,并且在方法上它是electronic
而不是electronics
用electronics
代替electronic
终于根据我的代码用一些eidt得到了答案的解决方案
感谢@ vrund purohit提供的链接如何使用Fragments中的XML onClick处理按钮单击 。
它最终帮助我了解了下面的代码
// Fragment java file updated public class TopfreeFragment extends Fragment implements View.OnClickListener { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_topfree, container, false); Button b = (Button) v.findViewById(R.id.button2); b.setOnClickListener(this); return v; } @Override public void onClick(View v) { switch (v.getId()) { case R.id.button2: Intent intent = new Intent(getActivity(),Electronicspage.class); startActivity(intent); break; } } }
这是您可以用来处理来自按钮的点击事件的另一种方式:
public class TopfreeFragment extends Fragment implements View.OnClickListener{
View view;
private Button btn;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
view = inflater.inflate(R.layout.fragment_topfree, container, false);
btn = (Button) view.findViewById(R.id.button2);
btn.setOnClickListener(this);
return view;
}
public void onClick(View view) {
switch(view.getId()) {
case R.id.button2:
startActivity(new Intent(getActivity(),Electronicspage.class));
break;
case R.id.XXXXX:
break;
// more button......
}
}
}
本文对您确实有帮助: Android:如何处理按钮单击
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.