Java AndroidStudio:创建一个可以读取片段的滑动标签应用程序。强行关闭

Java AndroidStudio:创建一个可以读取片段的滑动标签应用程序。强行关闭,java,android,android-fragments,tabs,swipeview,Java,Android,Android Fragments,Tabs,Swipeview,我基本上是一个新的Android Studio开发人员,目前我正尝试在我的程序的3个选项卡之间切换。不幸的是,当我试图打开东西时,程序强制关闭。我不完全确定问题出在哪里,因为我声明了与选项卡相关的类的实例 MainActivity.java Tab1其他两个选项卡相同 我已经在其他网站上寻找过这方面的帮助,大多数网站都涵盖了过时的程序或者没有完全涵盖这个问题,我没有其他东西可以求助,所以我非常感谢你对这个问题的任何帮助 编辑:我已经了解到它与创建类的.newinstance有关,但我还没有完全掌

我基本上是一个新的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方法


您必须在主活动中实现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");
    }
}