Java AndroidStudio:创建一个可以读取片段的滑动标签应用程序。强行关闭
我基本上是一个新的Android Studio开发人员,目前我正尝试在我的程序的3个选项卡之间切换。不幸的是,当我试图打开东西时,程序强制关闭。我不完全确定问题出在哪里,因为我声明了与选项卡相关的类的实例 MainActivity.java Tab1其他两个选项卡相同 我已经在其他网站上寻找过这方面的帮助,大多数网站都涵盖了过时的程序或者没有完全涵盖这个问题,我没有其他东西可以求助,所以我非常感谢你对这个问题的任何帮助 编辑:我已经了解到它与创建类的.newinstance有关,但我还没有完全掌握它是如何实现的 Logcat输出。仅包含错误部分 10-29 21:04:04.599 9452-9452/com.example.main E/AndroidRuntime﹕ 致命异常:主 进程:com.authpayx.authportbeta04,PID:9452 java.lang.ClassCastException:com.example.main。main@42d45398必须实施 OnFragmentInteractionListener 位于com.example.main.Tab1.onAttachTab1.java:84 在android.app.FragmentManagerImpl.moveToStateFragmentManager.java:849 在android.app.FragmentManagerImpl.performPendingDeferredStartFragmentManager.java:785 位于android.app.Fragment.setUserVisibleHintFragment.java:997 位于android.support.v13.app.FragmentCompatICSMR1.setUserVisibleHintFragmentCompatICSMR1.java:23 在android.support.v13.app.FragmentCompat$icsmr1FragmentCompimpl.setUserVisibleHintFragmentCompat.java:48 位于android.support.v13.app.FragmentCompat.setUserVisibleHintFragmentCompat.java:76 位于android.support.v13.app.FragmentPagerAdapter.setPrimaryItemFragmentPagerAdapter.java:134 在android.support.v4.view.ViewPager.populateViewPager.java:1071 在android.support.v4.view.ViewPager.populateViewPager.java:919 在android.support.v4.view.ViewPager.onMeasureViewPager.java:1441 在android.view.view.measureView.java:17478 在android.view.ViewGroup.measureChildWithMarginsViewGroup.java:5364 在android.widget.FrameLayout.onMeasureFrameLayout.java:310 在android.view.view.measureView.java:17478 在android.view.ViewGroup.measureChildWithMarginsViewGroup.java:5364 位于com.android.internal.widget.ActionBarOverlayLayout.onMeasureActionBarOverlayLayout.java:412 在android.view.view.measureView.java:17478 在android.view.ViewGroup.measureChildWithMarginsViewGroup.java:5364 在android.widget.FrameLayout.onMeasureFrameLayout.java:310 在com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasurePhoneWindow.java:2548 在android.view.view.measureView.java:17478 在android.view.ViewRootImpl.PerformMeasureReviewRootimpl.java:2262 在android.view.ViewRootImpl.measureHierarchyViewRootImpl.java:1391 在android.view.ViewRootImpl.performTraversalsViewRootImpl.java:1590 在android.view.ViewRootImpl.doTraversalViewRootImpl.java:1249 在android.view.ViewRootImpl$TraversalRunnable.runViewRootImpl.java:6585 在android.view.Choreographer$CallbackRecord.runChoreographer.java:803 在android.view.Choreographer.docallbackshoreographer.java:603 在android.view.Choreographer.doFrameChoreographer.java:573 在android.view.Choreographer$FrameDisplayEventReceiver.runChoreographer.java:789 位于android.os.Handler.handleCallbackHandler.java:733 在android.os.Handler.dispatchMessageHandler.java:95 在android.os.Looper.Looper.java:136 在android.app.ActivityThread.mainActivityThread.java:5579 在java.lang.reflect.Method.invokenactive方法中 位于java.lang.reflect.Method.invokeMethod.java:515 在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.runZygoteInit.java:1268 位于com.android.internal.os.ZygoteInit.mainZygoteInit.java:1084 在dalvik.system.NativeStart.mainNative方法Java AndroidStudio:创建一个可以读取片段的滑动标签应用程序。强行关闭,java,android,android-fragments,tabs,swipeview,Java,Android,Android Fragments,Tabs,Swipeview,我基本上是一个新的Android Studio开发人员,目前我正尝试在我的程序的3个选项卡之间切换。不幸的是,当我试图打开东西时,程序强制关闭。我不完全确定问题出在哪里,因为我声明了与选项卡相关的类的实例 MainActivity.java Tab1其他两个选项卡相同 我已经在其他网站上寻找过这方面的帮助,大多数网站都涵盖了过时的程序或者没有完全涵盖这个问题,我没有其他东西可以求助,所以我非常感谢你对这个问题的任何帮助 编辑:我已经了解到它与创建类的.newinstance有关,但我还没有完全掌
您必须在主活动中实现OnFragmentInteractionListener。 改变 公共类主扩展活动实现ActionBar.TabListener 到 公共类主扩展活动实现ActionBar.TableStener,OnFragmentInteractionListener 然后确保你的工具
public void onFragmentInteraction(Uri uri);
在你的主要活动中
关于新实例方法的一些信息。这是一种常见的做法,而不是您正在实施的特殊方法。您可以随意调用它,但其思想是新实例方法接受您的参数并将它们添加到包中。当android销毁你的片段时,它会使用i
ts默认构造函数没有您的数据
解决方案是使用一个新的实例方法,并将您的数据放在一个捆绑包中,因为当android重新创建您的片段时,它的捆绑包会粘在一起
您唯一不关心新实例的时候是您没有将任何内容传递到片段中 这个问题似乎与您的Tab1片段类有关。另外,您似乎是通过AndroidStudio自动生成的空白片段类创建了这个片段类。 为了解决这个问题,您可以使用下面的代码更改自动生成的片段类(如Tab1)的代码
package com.example.android.actionbarcompat.styled;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* Created by taher on 1/7/15.
*/
public class MainFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.main_view, container, false);
}
}
如果您想使用您的Tab1片段类,请不要在下面评论您的片段类
/**
* This interface must be implemented by activities that contain this
* fragment to allow an interaction in this fragment to be communicated
* to the activity and potentially other fragments contained in that
* activity.
* <p>
* See the Android Training lesson <a href=
* "http://developer.android.com/training/basics/fragments/communicating.html"
* >Communicating with Other Fragments</a> for more information.
*/
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
public void onFragmentInteraction(Uri uri);
}
我也有同样的问题,就我而言, 删除
这些代码,问题解决了您有日志给我们看吗?我怀疑这与您使用的是Activity而不是fragment Activity有关。我已经在问题的底部上传了logcat。
package com.example.android.actionbarcompat.styled;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
/**
* Created by taher on 1/7/15.
*/
public class MainFragment extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.main_view, container, false);
}
}
/**
* This interface must be implemented by activities that contain this
* fragment to allow an interaction in this fragment to be communicated
* to the activity and potentially other fragments contained in that
* activity.
* <p>
* See the Android Training lesson <a href=
* "http://developer.android.com/training/basics/fragments/communicating.html"
* >Communicating with Other Fragments</a> for more information.
*/
public interface OnFragmentInteractionListener {
// TODO: Update argument type and name
public void onFragmentInteraction(Uri uri);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
mListener = (OnFragmentInteractionListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " must implement OnFragmentInteractionListener");
}
}