android - 异步任务崩溃 ViewPager RecyclerView (Android)

标签 android android-fragments android-recyclerview android-asynctask android-viewpager

目前,我正在做一个android项目,我在其中实现了底部导航 View 和滑动效果,我可以在其中左右交换 fragment 。它们是同步的。

不幸的是,我有 2 个错误,我无法解决。

  1. 当我轻扫时,Asynctask 崩溃了。我收到以下错误:

E/MessageQueue-JNI: java.lang.IllegalStateException: Cannot execute task: the task is already running.

这是因为 Asynctask 在它已经运行时被调用了吗?

我想我必须在运行 Asynctask 之前取消它,但我该怎么做呢?

  1. 我有 5 个 fragment 开始,您可以在我的底部导航 View 中看到它们。它们还可以通过在屏幕上左右滑动来改变。在导航栏的第二个项目上,我有一个 Cardview,它是用 recyclerViewAdapter 实现的。每当我单击其中一个卡片 View 时,它应该会更改为一个新 fragment 。导航 View 中未显示的 fragment 。在 recyclerViewAdapter Java 类中有一个 onClick,每当我点击其中一个卡片 View 时,它应该会更改 fragment ,但由于某种原因,它不起作用。

图片在这里:

enter image description here

* 代码在这里 *

主要 Activity :

@Override
public void onBackPressed() {
    if (mPager.getCurrentItem() == 0) {
        // If the user is currently looking at the first step, allow the system to handle the
        // Back button. This calls finish() on this activity and pops the back stack.
        super.onBackPressed();
    } else {
        // Otherwise, select the previous step.
        mPager.setCurrentItem(mPager.getCurrentItem() - 1);
    }
}

/**
 * view pager.
 */

public void setupViewPager(ViewPager viewPager){

    ViewPageAdapter adapter = new ViewPageAdapter(getSupportFragmentManager());
    adapter.addFragment(new StartsideFragment());
    adapter.addFragment(new CardViewTabelFragment());
    adapter.addFragment(new SensorOversigtFragment());
    adapter.addFragment(new KontaktFragment());
    viewPager.setAdapter(adapter);

}

public void setViewPager(int fragmentNumber){

    mPager.setCurrentItem(fragmentNumber);

}

public void enableViewPagerSwitch(){

    mPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

        }

        @Override
        public void onPageSelected(int position) {

            if (prevMenuItem != null) {
                prevMenuItem.setChecked(false);
            }
            else
            {
                mBottomNav.getMenu().getItem(0).setChecked(false);
            }
            Log.d("page", "onPageSelected: "+position);
            mBottomNav.getMenu().getItem(position).setChecked(true);
            prevMenuItem = mBottomNav.getMenu().getItem(position);

        }

        @Override
        public void onPageScrollStateChanged(int state) {

        }
    });

    setupViewPager( mPager );

}



public void bot_Navigation() {

    mBottomNav = (BottomNavigationView) findViewById( R.id.nav_bot );

    botNavHelper.disableShiftMode( mBottomNav );

    mBottomNav.setOnNavigationItemSelectedListener( new BottomNavigationView.OnNavigationItemSelectedListener() {
        @Override
        public boolean onNavigationItemSelected(@NonNull MenuItem item) {
            switch (item.getItemId()) {

                case R.id.bot_startside:
                    // overridePendingTransition( R.anim.slide_in_right, R.anim.slide_out_left );
                    //mPager.setCurrentItem( 0 );
                    setViewPager( 0 );
                    //fragment = new StartsideFragment();

                    break;

                case R.id.bot_datatabel:
                    //overridePendingTransition( R.anim.slide_in_right, R.anim.slide_out_left );
                    //mPager.setCurrentItem( 1 );
                    setViewPager( 1 );
                    //fragment = new CardViewTabelFragment();
                    //viewPager.setCurrentItem( 1 );
                    break;

                case R.id.bot_sensorOversigt:
                    //overridePendingTransition( R.anim.slide_in_right, R.anim.slide_out_left );
                    //mPager.setCurrentItem( 2 );
                    setViewPager( 2 );
                    //fragment = new KontaktFragment();
                    break;

                case R.id.bot_kontakt:
                    //overridePendingTransition( R.anim.slide_in_right, R.anim.slide_out_left );
                    //mPager.setCurrentItem( 3 );
                    setViewPager( 3 );
                    //fragment = new SensorOversigtFragment();
                    break;

                case R.id.bot_logUd:
                    //overridePendingTransition( R.anim.slide_in_right, R.anim.slide_out_left );
                    //mPager.setCurrentItem( 4 );
                    setViewPager( 4 );
                    alertDialog();
                    break;
            }

            if (fragment != null) {
                FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
                ft.replace( R.id.flMain, fragment );
                ft.commit();
            }

            return true;
        }
    } );

}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate( savedInstanceState );

    onCreate2();

    bot_Navigation();


}

protected void onCreate2() {
    //  protected void onCreate2(Bundle savedInstanceState) {
    //  super.onCreate(savedInstanceState);
    setContentView( R.layout.activity_main );
    Toolbar toolbar = (Toolbar) findViewById( R.id.toolbar );
    setSupportActionBar( toolbar );
    //toolbar.setLogo( R.mipmap.ic_launcher_cxweb_black );

    TextView mTitle = (TextView) toolbar.findViewById( R.id.toolbartitle );

    mTitle.setText( toolbar.getTitle() );

    getSupportActionBar().setDisplayShowTitleEnabled( false );

    //toolbar.setTitle( "LeoSenses" );

    mPager = (ViewPager) findViewById( R.id.flMain );

    enableViewPagerSwitch();

    DrawerLayout drawer = (DrawerLayout) findViewById( R.id.drawer_layout );
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close );
    drawer.addDrawerListener( toggle );
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById( R.id.nav_view );
    navigationView.setNavigationItemSelectedListener( this );


    //Default fragment for startside

    android.support.v4.app.FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
    ft.replace( R.id.flMain, new StartsideFragment() );
    ft.commit();

    navigationView.setCheckedItem( R.id.nav_startside );

    PreferenceManager.getDefaultSharedPreferences( this ).getBoolean( "brugPosVedStart", true );

}

ViewPageAdapter:

public class ViewPageAdapter extends FragmentStatePagerAdapter {

private final List<Fragment> mFragmentList = new ArrayList<>();

public ViewPageAdapter(FragmentManager fm) {
    super( fm );
}

public void addFragment(Fragment fragment) {
    mFragmentList.add( fragment );
}

@Override
public Fragment getItem(int position) {
    return mFragmentList.get( position );
}

@Override
public int getCount() {
       return mFragmentList.size();
    }

}

回收 View 适配器:

public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.RecyclerViewHolder> {

private ViewPager mPager;

@Override
public RecyclerViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {

    View view = LayoutInflater.from( viewGroup.getContext() ).inflate( R.layout.fragment_card_view_tabel, viewGroup, false );

    viewGroup.setOnClickListener( new View.OnClickListener() {

        @Override
        public void onClick(View view) {

        }
    } );

    return new RecyclerViewHolder( view );
}

@Override
public void onBindViewHolder(RecyclerViewHolder recyclerViewHolder, int i) {

    recyclerViewHolder.mBeskrivelse.setText( OurData.beskrivelse[i] );
    recyclerViewHolder.mTitle.setText( OurData.title[i] );
    recyclerViewHolder.cardView.setCardBackgroundColor( Color.parseColor( OurData.colors[i] ) );

}

@Override
public int getItemCount() {
    return OurData.title.length;
}


class RecyclerViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    public int nummer;
    private TextView mBeskrivelse;
    private TextView mTitle;
    private CardView cardView;


    public RecyclerViewHolder(View itemView) {
        super( itemView );
        mPager = (ViewPager) itemView.findViewById( R.id.flMain );
        mBeskrivelse = (TextView) itemView.findViewById( R.id.item_beskrivelse );
        mTitle = (TextView) itemView.findViewById( R.id.item_title );
        cardView = (CardView) itemView.findViewById( R.id.card_view );
        itemView.setOnClickListener( this );

    }


    @Override
    public void onClick(View v) {

        nummer = getAdapterPosition();

        if (nummer == 0) {
            //mPager.setCurrentItem(0);

            ((FragmentActivity) itemView.getContext()).getSupportFragmentManager().beginTransaction().replace( R.id.flMain, new DataTabelFragment() ).commit();

        } else if (nummer == 1) {

            ((FragmentActivity) itemView.getContext()).getSupportFragmentManager().beginTransaction().replace( R.id.flMain, new Sensor1Fragment() ).commit();

        } else if (nummer == 2) {

            ((FragmentActivity) itemView.getContext()).getSupportFragmentManager().beginTransaction().replace( R.id.flMain, new Sensor2Fragment() ).commit();

        } else if (nummer == 3) {

            ((FragmentActivity) itemView.getContext()).getSupportFragmentManager().beginTransaction().replace( R.id.flMain, new Sensor3Fragment() ).commit();

        }
       }
    }
}

带有异步任务的 fragment 之一:

public class DataTabelFragment extends Fragment implements jsonAsynctask.DataTabelFragment {

public TextView sensor1;

jsonAsynctask jsonasynctask = new jsonAsynctask( this );


public DataTabelFragment() {
    // Required empty public constructor
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    View view = inflater.inflate( R.layout.fragment_data_tabel, container, false );

    sensor1 = (TextView) view.findViewById( R.id.sensorAlleBox );

    jsonasynctask.execute();

    return view;

}

@Override
public void onJobFinishListener(List<String> allId) {
    //when this method is trigered by your asynctask
    //it means that you are in ui thread and update your ui component

    for (int i = 0; i < allId.size(); i++) {

        sensor1.append( jsonasynctask.allId.get( i ) + " | " + jsonasynctask.allDevice.get( i ) + " | " + jsonasynctask.allTemp.get( i ) + " | " + jsonasynctask.allHum.get( i ) + " | " + jsonasynctask.allBat.get( i ) + " | " + jsonasynctask.allMode.get( i ) + " | " + jsonasynctask.allLux.get( i ) + " | " + jsonasynctask.allDate_time.get( i ) + "\n\n" );

    }
 }

}

* 更新 *

使用 ASYNCTASK 发生错误的 fragment :

public class SensorOversigtFragment extends Fragment implements jsonAsynctask.DataTabelFragment {

private TextView firstValue;
private TextView firstValue2;
private TextView firstDevice;
private TextView secondValue;
private TextView secondDevice;
private TextView secondValue2;

private ImageView firstImage, secondImage;

private View firstView, secondView;

private LinearLayout linear1, linear2;

jsonAsynctask jsonasynctask = new jsonAsynctask( this );

public SensorOversigtFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View view = inflater.inflate( R.layout.content_sensor_oversigt, container, false );

    firstValue = (TextView) view.findViewById( R.id.firstValue );
    firstDevice = (TextView) view.findViewById( R.id.firstDevice );
    firstValue2 = (TextView) view.findViewById( R.id.firstValue2 );
    secondDevice = (TextView) view.findViewById( R.id.secondDevice );
    secondValue = (TextView) view.findViewById( R.id.secondValue );
    secondValue2 = (TextView) view.findViewById( R.id.secondValue2 );

    linear1 = (LinearLayout) view.findViewById( R.id.linear1 );
    linear2 = (LinearLayout) view.findViewById( R.id.linear2 );

    firstImage = (ImageView) view.findViewById( R.id.firstImage );
    secondImage = (ImageView) view.findViewById( R.id.secondImage );

    firstView = (View) view.findViewById( R.id.firstView );
    secondView = (View) view.findViewById( R.id.secondView );

    if (jsonasynctask.getStatus() == AsyncTask.Status.RUNNING) {
        jsonasynctask.cancel( true );
    } else if (jsonasynctask.getStatus() != AsyncTask.Status.RUNNING) {
        jsonasynctask.execute();
    }

    return view;
}

@Override
public void onJobFinishListener(List<String> allId) {

    //System.out.println( "LAST MODE: " + jsonasynctask.allMode.get( allId.size() - 1 ) );

    for (int i = 0; i < allId.size(); i++) {

        if (jsonasynctask.allDevice.get( i ).equals( "B42DB2" )) {

            if (jsonasynctask.allMode.get( i ).equals( "0" )) {

                linear1.setBackgroundColor( Color.parseColor( "#A9A9A9" ) );
                firstDevice.setBackgroundColor( Color.parseColor( "#808080" ) );

                firstDevice.setText( "STANDBY MODE" );

                firstValue.setVisibility( View.GONE );
                firstValue2.setVisibility( View.GONE );

                firstImage.setColorFilter( Color.parseColor( "#A9A9A9" ) );
                firstView.setBackgroundColor( Color.parseColor( "#A9A9A9" ) );

            } else if (jsonasynctask.allMode.get( i ).equals( "1" )) {

                linear1.setBackgroundColor( Color.parseColor( "#A0D468" ) );
                firstValue.setBackgroundColor( Color.parseColor( "#8CC152" ) );
                firstValue2.setBackgroundColor( Color.parseColor( "#8CC152" ) );
                firstDevice.setBackgroundColor( Color.parseColor( "#8CC152" ) );
                firstView.setBackgroundColor( Color.parseColor( "#A0D468" ) );

                firstImage.setImageResource( R.drawable.lighticon );

                firstValue.setText( jsonasynctask.allTemp.get( i ) + "°C" );
                firstValue2.setText( jsonasynctask.allHum.get( i ) + "%" );
                firstDevice.setText( jsonasynctask.allDevice.get( i ) );

                firstValue.setVisibility( View.VISIBLE );
                firstValue2.setVisibility( View.VISIBLE );

                firstImage.setColorFilter( Color.parseColor( "#FFFFFF" ) );

            } else if (jsonasynctask.allMode.get( i ).equals( "2" )) {

                linear1.setBackgroundColor( Color.parseColor( "#FFCE54" ) );
                firstValue.setBackgroundColor( Color.parseColor( "#F68B42" ) );
                firstValue2.setBackgroundColor( Color.parseColor( "#F68B42" ) );
                firstDevice.setBackgroundColor( Color.parseColor( "#F68B42" ) );
                firstView.setBackgroundColor( Color.parseColor( "#FFCE54" ) );

                firstImage.setImageResource( R.drawable.light_bulb_7_512 );

                firstValue.setText( jsonasynctask.allLux.get( i ) );
                firstValue2.setText( "Lux" );
                firstDevice.setText( jsonasynctask.allDevice.get( i ) );

                firstValue.setVisibility( View.VISIBLE );
                firstValue2.setVisibility( View.VISIBLE );

                firstImage.setColorFilter( Color.parseColor( "#FFFFFF" ) );

            } else if (jsonasynctask.allMode.get( i ).equals( "3" )) {

                linear1.setBackgroundColor( Color.parseColor( "#4FC1E9" ) );
                firstValue.setBackgroundColor( Color.parseColor( "#3BAFDA" ) );
                firstValue2.setBackgroundColor( Color.parseColor( "#3BAFDA" ) );
                firstDevice.setBackgroundColor( Color.parseColor( "#3BAFDA" ) );
                firstView.setBackgroundColor( Color.parseColor( "#4FC1E9" ) );

                firstImage.setImageResource( R.drawable.ic_baseline_meeting_room_24px );

                firstValue.setText( jsonasynctask.allDoor.get( i ) );
                firstValue2.setText( "Door" );
                firstDevice.setText( jsonasynctask.allDevice.get( i ) );

                firstValue.setVisibility( View.VISIBLE );
                firstValue2.setVisibility( View.VISIBLE );

                firstImage.setColorFilter( Color.parseColor( "#FFFFFF" ) );

            } else if (jsonasynctask.allMode.get( i ).equals( "4" )) {

                linear1.setBackgroundColor( Color.parseColor( "#509CEC" ) );
                firstValue.setBackgroundColor( Color.parseColor( "#4A89DC" ) );
                firstValue2.setBackgroundColor( Color.parseColor( "#4A89DC" ) );
                firstDevice.setBackgroundColor( Color.parseColor( "#4A89DC" ) );
                firstView.setBackgroundColor( Color.parseColor( "#509CEC" ) );

                firstImage.setImageResource( R.drawable.vibration );

                firstValue.setText( jsonasynctask.allVib.get( i ) );
                firstValue2.setText( "Vib" );
                firstDevice.setText( jsonasynctask.allDevice.get( i ) );

                firstValue.setVisibility( View.VISIBLE );
                firstValue2.setVisibility( View.VISIBLE );

                firstImage.setColorFilter( Color.parseColor( "#FFFFFF" ) );

            } else if (jsonasynctask.allMode.get( i ).equals( "5" )) {

                linear1.setBackgroundColor( Color.parseColor( "#EC87C0" ) );
                firstValue.setBackgroundColor( Color.parseColor( "#D770AD" ) );
                firstValue2.setBackgroundColor( Color.parseColor( "#D770AD" ) );
                firstDevice.setBackgroundColor( Color.parseColor( "#D770AD" ) );
                firstView.setBackgroundColor( Color.parseColor( "#EC87C0" ) );

                firstImage.setImageResource( R.drawable.ic_magnet );

                firstValue.setText( jsonasynctask.allMag.get( i ) );
                firstValue2.setText( "Mag" );
                firstDevice.setText( jsonasynctask.allDevice.get( i ) );

                firstValue.setVisibility( View.VISIBLE );
                firstValue2.setVisibility( View.VISIBLE );

                firstImage.setColorFilter( Color.parseColor( "#FFFFFF" ) );

            }

        } else if (jsonasynctask.allDevice.get( i ).equals( "B42DC6" )) {

            if (jsonasynctask.allMode.get( i ).equals( "0" )) {

                linear2.setBackgroundColor( Color.parseColor( "#A9A9A9" ) );
                secondDevice.setBackgroundColor( Color.parseColor( "#808080" ) );

                secondDevice.setText( "STANDBY MODE" );

                secondValue.setVisibility( View.GONE );
                secondValue2.setVisibility( View.GONE );

                secondImage.setColorFilter( Color.parseColor( "#A9A9A9" ) );
                secondView.setBackgroundColor( Color.parseColor( "#A9A9A9" ) );


            } else if (jsonasynctask.allMode.get( i ).equals( "1" )) {

                linear2.setBackgroundColor( Color.parseColor( "#A0D468" ) );
                secondValue.setBackgroundColor( Color.parseColor( "#8CC152" ) );
                secondValue2.setBackgroundColor( Color.parseColor( "#8CC152" ) );
                secondDevice.setBackgroundColor( Color.parseColor( "#8CC152" ) );
                secondView.setBackgroundColor( Color.parseColor( "#A0D468" ) );

                secondImage.setImageResource( R.drawable.lighticon );

                secondValue.setText( jsonasynctask.allTemp.get( i ) + "°C" );
                secondValue2.setText( jsonasynctask.allHum.get( i ) + "%" );
                secondDevice.setText( jsonasynctask.allDevice.get( i ) );

                secondValue.setVisibility( View.VISIBLE );
                secondValue2.setVisibility( View.VISIBLE );

                secondImage.setColorFilter( Color.parseColor( "#FFFFFF" ) );

            } else if (jsonasynctask.allMode.get( i ).equals( "2" )) {

                linear2.setBackgroundColor( Color.parseColor( "#FFCE54" ) );
                secondValue.setBackgroundColor( Color.parseColor( "#F68B42" ) );
                secondValue2.setBackgroundColor( Color.parseColor( "#F68B42" ) );
                secondDevice.setBackgroundColor( Color.parseColor( "#F68B42" ) );
                secondView.setBackgroundColor( Color.parseColor( "#FFCE54" ) );

                secondImage.setImageResource( R.drawable.light_bulb_7_512 );

                secondValue.setText( jsonasynctask.allLux.get( i ) );
                secondValue2.setText( "Lux" );
                secondDevice.setText( jsonasynctask.allDevice.get( i ) );

                secondValue.setVisibility( View.VISIBLE );
                secondValue2.setVisibility( View.VISIBLE );

                secondImage.setColorFilter( Color.parseColor( "#FFFFFF" ) );

            } else if (jsonasynctask.allMode.get( i ).equals( "3" )) {

                linear2.setBackgroundColor( Color.parseColor( "#4FC1E9" ) );
                secondValue.setBackgroundColor( Color.parseColor( "#3BAFDA" ) );
                secondValue2.setBackgroundColor( Color.parseColor( "#3BAFDA" ) );
                secondDevice.setBackgroundColor( Color.parseColor( "#3BAFDA" ) );
                secondView.setBackgroundColor( Color.parseColor( "#4FC1E9" ) );

                secondImage.setImageResource( R.drawable.ic_baseline_meeting_room_24px );

                secondValue.setText( jsonasynctask.allDoor.get( i ) );
                secondValue2.setText( "Door" );
                secondDevice.setText( jsonasynctask.allDevice.get( i ) );

                secondValue.setVisibility( View.VISIBLE );
                secondValue2.setVisibility( View.VISIBLE );

                secondImage.setColorFilter( Color.parseColor( "#FFFFFF" ) );

            } else if (jsonasynctask.allMode.get( i ).equals( "4" )) {

                linear2.setBackgroundColor( Color.parseColor( "#509CEC" ) );
                secondValue.setBackgroundColor( Color.parseColor( "#4A89DC" ) );
                secondValue2.setBackgroundColor( Color.parseColor( "#4A89DC" ) );
                secondDevice.setBackgroundColor( Color.parseColor( "#4A89DC" ) );
                secondView.setBackgroundColor( Color.parseColor( "#509CEC" ) );

                secondImage.setImageResource( R.drawable.vibration );

                secondValue.setText( jsonasynctask.allVib.get( i ) );
                secondValue2.setText( "Vib" );
                secondDevice.setText( jsonasynctask.allDevice.get( i ) );

                secondValue.setVisibility( View.VISIBLE );
                secondValue2.setVisibility( View.VISIBLE );

                secondImage.setColorFilter( Color.parseColor( "#FFFFFF" ) );

            } else if (jsonasynctask.allMode.get( i ).equals( "5" )) {

                linear2.setBackgroundColor( Color.parseColor( "#EC87C0" ) );
                secondValue.setBackgroundColor( Color.parseColor( "#D770AD" ) );
                secondValue2.setBackgroundColor( Color.parseColor( "#D770AD" ) );
                secondDevice.setBackgroundColor( Color.parseColor( "#D770AD" ) );
                secondView.setBackgroundColor( Color.parseColor( "#EC87C0" ) );

                secondImage.setImageResource( R.drawable.ic_magnet );

                secondValue.setText( jsonasynctask.allMag.get( i ) );
                secondValue2.setText( "Mag" );
                secondDevice.setText( jsonasynctask.allDevice.get( i ) );

                secondValue.setVisibility( View.VISIBLE );
                secondValue2.setVisibility( View.VISIBLE );

                secondImage.setColorFilter( Color.parseColor( "#FFFFFF" ) );

            }

        }




     }

    }

}

最佳答案

AsyncTask 崩溃可能是因为 onCreateView 在您的 fragment 实例上被多次调用,请尝试此操作以确保对于每个 execute() 调用您都有一个新实例

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    View view = inflater.inflate( R.layout.fragment_data_tabel, container, false );

    sensor1 = (TextView) view.findViewById( R.id.sensorAlleBox );

    new jsonAsynctask( this ).execute();

    return view;
}

另一方面,如果您不喜欢一直创建新实例,请确保将调用包装在异步状态调用检查中,以确保您在运行时不会启动相同的异步:

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        // Inflate the layout for this fragment

        View view = inflater.inflate( R.layout.fragment_data_tabel, container, false );

        sensor1 = (TextView) view.findViewById( R.id.sensorAlleBox );

if(jsonasynctask.getState() != AsyncTask.Status.RUNNING){

        jsonasynctask.execute();
}

        return view;

    }

最后,如果您在 AsyncTask 类中使用上下文,请确保使用 WeekReference 以确保您在 AsynTask 中没有持有强引用

关于android - 异步任务崩溃 ViewPager RecyclerView (Android),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52830684/

相关文章:

java - 从 Android Activity 类调用接口(interface)方法

android - 如何实现聊天屏幕类型的软键盘行为?

android-fragments - 回收器 View 不会在片段内呈现

java - Recyclerview 从上次停下的地方继续

安卓 : Multi line text EditText inside BottomSheetDialog

javascript - 使用 JavaScript 的原生 Android DatePicker

java - AsyncTask vs Thread vs Service(与服务器通信)

Android 从相机获取全尺寸图像

java - android中的静态单例类内存泄漏

java - 在选项卡 View 之间滑动几次后膨胀异常