[英]Fragment to Activity
我已經在片段中聲明了一個按鈕,並在XML中連接了onClick屬性。當我單擊此片段中的按鈕時,它應該重定向到另一個擴展activity的類文件。但不幸的是app停止了。
我的班級檔案
public class ReadingBeginner extends Fragment{
public ReadingBeginner() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public void Alpha(View v){
Intent intent = new Intent(this,Alphabet.class);
startActivity(intent);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.activity_reading_beginner, container, false);
}}
我在xml中的bytton
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/Alpha"
android:onClick="Alpha"
android:id="@+id/alphas"
android:textAlignment="textStart"
android:background="@drawable/drawable"
android:drawableLeft="@drawable/ic_alpha"
android:drawablePadding="15dp"
android:textAllCaps="false"
/>
這是我需要按鈕重定向的類文件
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class Alphabet extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_alphabet);
getIntent();
}
}
Logcat出錯
03-16 03:19:09.061 25450-25450/com.example.world.englishtutor E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.IllegalStateException: Could not find method Alpha(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatButton with id 'alphas'
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:325)
at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284)
at android.view.View.performClick(View.java:4240)
at android.view.View$PerformClick.run(View.java:17721)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
您的布局假設Button將在其定義的活動中調用名為“alpha”的方法。 如果在片段中定義方法,則此方法無效。
相反,在您的片段中,您應該在視圖層次結構中找到Button,並在其上注冊一個OnClickListener,它可以執行您想要的操作。
從xml中刪除onClick。 然后在片段類的onCreateView()方法中查找Button。 然后在其中設置onClick()按鈕和startactivity。
在onCreate()
:
Button btn = (Button) yourinflatedview.findviewbyid (R.id.alphas);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(),Alphabet.class);
startActivity(intent);
}
});
去掉
1. android:onClick="Alpha" in xml
2.
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
3.public void Alpha(View v){
Intent intent = new Intent(this,Alphabet.class);
startActivity(intent);
}
和OnCreateView
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.activity_reading_beginner, container,false);
Button btn1 = (Button) root.findViewById(R.id.alphas);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(),Alphabet.class);
startActivity(intent);
}
});
return root;
}
試試吧!
試試吧。
從xml中刪除onclick
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/Alpha"
android:id="@+id/alphas"
android:textAlignment="textStart"
android:background="@drawable/drawable"
android:drawableLeft="@drawable/ic_alpha"
android:drawablePadding="15dp"
android:textAllCaps="false"
/>
在此之后將其放入onCreateview。
Button b = (Button) findviewbyid (R.id.alphas);
bb2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(),Alphabet.class);
startActivity(intent);
}
});
否則你改變getActivity()而不是這個
Intent intent = new Intent(getActivity(),Alphabet.class);
startActivity(intent);
它會將片段移動到活動中。 希望它會幫助你:)
首先,您必須初始化片段中的按鈕。
你必須在這里使用getActivity()方法而不是這個!
public void Alpha(View v){
Intent intent = new Intent(getActivity(),Alphabet.class);
startActivity(intent);
}
正如道格所說。 請執行下列操作:
Button button = (Button) root.findViewById(R.id.alphas);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getActivity(),Alphabet.class);
startActivity(intent);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.