我決定把我的MainActivity
類擴展到Fragment
現在我的應用程序崩潰(甚至不負載 - 參見下面的堆棧跟蹤)。的Android應用程序崩潰時,我已經將我MainActivity到碎片
這是我的代碼:
public class MainActivity extends Fragment {
Button login;
EditText username;
EditText password;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View view = inflater.inflate(R.layout.activity_main, container, false);
loginButtonOnClick();
return view;
}
private void loginButtonOnClick(){
Button loginButtons = (Button) getView().findViewById(R.id.loginButton);
loginButtons.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Fragment userPage = new UserPage();
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.mainGUI, userPage);
transaction.addToBackStack(null);
transaction.commit();
}
});
}
}
這是我xml
文件:
這是堆棧跟蹤:
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{lukazs.newapps/lukazs.newapps.MainActivity}: java.lang.ClassCastException: lukazs.newapps.MainActivity cannot be cast to android.app.Activity
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
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)
Caused by: java.lang.ClassCastException: lukazs.newapps.MainActivity cannot be cast to android.app.Activity
at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
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)
我要使用 這是我遇到嚴重困難的地方,我不能使用android.support.v4.app.Fragment
,因爲我無法從主要活動中調用此片段,因此我必須使用android.app.Fragment
。問題是getFragmentManager
屬於android.support.v4.app.Fragment
:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState){
View view = inflater.inflate(R.layout.dbusers, container, false);
viewPager = (ViewPager) getView().findViewById(R.id.pager);
viewPager.setAdapter(new TabsAdapter(getFragmentManager())); // getFragmentManager() can't be called.
}
現在我得到'getFragmentManager()'的錯誤,因爲我正在使用'import android.app.Fragment;'你知道如何解決這個 –
在你的MainActivity中使用getFragmentManager() https://github.com/CandleCoder/FragmentWithJava/blob/master/app/src/main/java/com/magicsw/fragmentwithjava/MainActivity.java – CandleCoder
請檢查我的更新後的帖子。它是在底部的代碼 –