Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android滑动标签问题:Can';t似乎没有更新UI,结果会重复n次_Android_Android Service_Android Fragmentactivity_Android Tabs_Swipeview - Fatal编程技术网

Android滑动标签问题:Can';t似乎没有更新UI,结果会重复n次

Android滑动标签问题:Can';t似乎没有更新UI,结果会重复n次,android,android-service,android-fragmentactivity,android-tabs,swipeview,Android,Android Service,Android Fragmentactivity,Android Tabs,Swipeview,我用了两门课。一个用于后台服务,我正在那里收集一些信息,另一个我决定使用滑动选项卡视图来管理和组织我的信息/数据。在后台服务(就像我说的)中,我检索信息(主要是字符串类型)并通过intent将它们发送到主活动,此活动通过broadcastreceiver接收信息(这部分工作正常)。现在我遇到的问题是,当我试图将信息分发到不同的选项卡时,它会重复出现,而且似乎不会刷新。现在,我最关键的问题是重复信息部分。我要把我的代码放在这里,看看你们当中有没有聪明的人:D能帮我。我希望你能 import jav

我用了两门课。一个用于后台服务,我正在那里收集一些信息,另一个我决定使用滑动选项卡视图来管理和组织我的信息/数据。在后台服务(就像我说的)中,我检索信息(主要是字符串类型)并通过intent将它们发送到主活动,此活动通过broadcastreceiver接收信息(这部分工作正常)。现在我遇到的问题是,当我试图将信息分发到不同的选项卡时,它会重复出现,而且似乎不会刷新。现在,我最关键的问题是重复信息部分。我要把我的代码放在这里,看看你们当中有没有聪明的人:D能帮我。我希望你能

import java.util.Locale;

import android.app.ActionBar;
import android.app.FragmentTransaction;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

public class ActivityMain extends FragmentActivity implements
    ActionBar.TabListener {
int NUM_TAB = 3;
static TextView InfoView1;  
static TextView InfoView2;
static TextView InfoView3;

static String infoData1 = "";
static String infoData2 = "";
static String infoData3 = "";

Fragment frag;

SectionsPagerAdapter mSectionsPagerAdapter;

ViewPager mViewPager;

Intent intent;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // Set up the action bar.
    final ActionBar actionBar = getActionBar();
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

    // Create the adapter that will return a fragment for each of the three
    // primary sections of the app.
    mSectionsPagerAdapter = new SectionsPagerAdapter(
            getSupportFragmentManager());

    // Set up the ViewPager with the sections adapter.
    mViewPager = (ViewPager) findViewById(R.id.pager);
    mViewPager.setAdapter(mSectionsPagerAdapter);

    // When swiping between different sections, select the corresponding
    // tab. We can also use ActionBar.Tab#select() to do this if we have
    // a reference to the Tab.
    mViewPager
            .setOnPageChangeListener(new      ViewPager.SimpleOnPageChangeListener() {
                @Override
                public void onPageSelected(int position) {
                    actionBar.setSelectedNavigationItem(position);
                }
            });

    // For each of the sections in the app, add a tab to the action bar.
    for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
        // Create a tab with text corresponding to the page title defined by
        // the adapter. Also specify this Activity object, which implements
        // the TabListener interface, as the callback (listener) for when
        // this tab is selected.
        actionBar.addTab(actionBar.newTab()
                .setText(mSectionsPagerAdapter.getPageTitle(i))
                .setTabListener(this));
    }
启动broadcastreceiver以调用后台服务

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        updateUI(intent);
    }
}; 

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.activity_main, menu);
    return true;
}

@Override
public void onTabSelected(ActionBar.Tab tab,
        FragmentTransaction fragmentTransaction) {
    // When the given tab is selected, switch to the corresponding page in
    // the ViewPager.
    mViewPager.setCurrentItem(tab.getPosition());

}

@Override
public void onTabUnselected(ActionBar.Tab tab,
        FragmentTransaction fragmentTransaction) {
}

@Override
public void onTabReselected(ActionBar.Tab tab,
        FragmentTransaction fragmentTransaction) {
}

/**
 * A {@link FragmentPagerAdapter} that returns a fragment corresponding to
 * one of the sections/tabs/pages.
 */
public class SectionsPagerAdapter extends FragmentPagerAdapter {

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

    @Override
    public Fragment getItem(int position) {
        // getItem is called to instantiate the fragment for the given page.
        // Return a DummySectionFragment (defined as a static inner class
        // below) with the page number as its lone argument.
        switch (position)
        {
            case 0:
                frag = new Information1();
                Bundle arg0 = new Bundle();
                arg0.putString(Information1.ARG_SECTION, infoData1);
                frag.setArguments(arg0);
                break;

            case 1:

                frag = new Information2();
                Bundle arg1 = new Bundle();
                arg1.putString(Information2.ARG_SECTION, infoData2);
                frag.setArguments(arg1);
                break;

            case 2:

                frag = new Information3();
                Bundle arg2 = new Bundle();
                arg2.putString(BatteryStatus.ARG_SECTION, infoData3);
                frag.Information3(arg2);
                break;

            default:
                frag = null;
                break;
        }
        return frag;
    }

    @Override
    public int getCount() {
        // Show 3 total pages.
        return NUM_TAB;
    }


    @Override
    public CharSequence getPageTitle(int position) {
        Locale l = Locale.getDefault();
        switch (position) {
        case 0:
            return getString(R.string.title_section1).toUpperCase(l);
        case 1:
            return getString(R.string.title_section2).toUpperCase(l);
        case 2:
            return getString(R.string.title_section3).toUpperCase(l);
        }
        return null;
    }
}

private void updateUI(Intent intent) {

    String stuff1 = intent.getStringExtra("stuff"); 
    String stuff2 = intent.getStringExtra("stuff2");
    String stuff3 = intent.getStringExtra("stuff3");
    String stuff4 = intent.getStringExtra("stuff4");
    String stuff5 = intent.getStringExtra("stuff5");
    String stuff6 = intent.getStringExtra("stuff6");
等等

并将它们存储在字符串中

    infoData1 += ("Stuff1: " + stuff1 + "\n");
    infoData1 += ("Stuff2: " + stuff2 + "\n");

    infoData2 += ("Stuff3: " + Stuff3 + "\n");
    infoData2 += ("Stuff4: " + Stuff4 + "\n");


    infoData3 += ("Stuff5: " +  Stuff5 + "\n");
    infoData3 += ("Stuff6: " +  Stuff6 + "\n");

}


public static class Information1 extends Fragment {

    public static final String ARG_SECTION = "section_number";

    public Information1(){

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View info1View = inflater.inflate(
            R.layout.information1, container, false);

    InfoView1 = (TextView) info1View
            .findViewById(R.id.info1);
    InfoView1.setText(getArguments().getString(ARG_SECTION));
    Log.d("InfoView1", infoData1);
    return info1View;
}
 }

    public static class Information2 extends Fragment {

        public static final String ARG_SECTION = "section_number";

        public Information2(){

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View info2View = inflater.inflate(
                R.layout.Information2, container, false);

        InfoView2 = (TextView) info2View
                .findViewById(R.id.info2);
        InfoView2.setText(getArguments().getString(ARG_SECTION));
        Log.d("InfoView2", infoData2);
        return info2View;
    }
}

    public static class Information3 extends Fragment {

        public static final String ARG_SECTION = "section_number";

        public Information3() {

        }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View info3View = inflater.inflate(
                R.layout.Information3, container, false);

        InfoView3 = (TextView) info3View
                .findViewById(R.id.info3);
        InfoView3.setText(getArguments().getString(ARG_SECTION));
        Log.d("BatteryStatView", infoData3);
        return info3View;
    }
    }

    @Override
    public void onResume() {
        super.onResume();       
        startService(intent);
        registerReceiver(broadcastReceiver, new IntentFilter(BroadcastService.BROADCAST_ACTION));
    }

    @Override
    public void onPause() {
        super.onPause();
        unregisterReceiver(broadcastReceiver);
        stopService(intent); 

    }
}
有什么想法吗=D

    infoData1 += ("Stuff1: " + stuff1 + "\n");
    infoData1 += ("Stuff2: " + stuff2 + "\n");

    infoData2 += ("Stuff3: " + Stuff3 + "\n");
    infoData2 += ("Stuff4: " + Stuff4 + "\n");


    infoData3 += ("Stuff5: " +  Stuff5 + "\n");
    infoData3 += ("Stuff6: " +  Stuff6 + "\n");

}


public static class Information1 extends Fragment {

    public static final String ARG_SECTION = "section_number";

    public Information1(){

}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    View info1View = inflater.inflate(
            R.layout.information1, container, false);

    InfoView1 = (TextView) info1View
            .findViewById(R.id.info1);
    InfoView1.setText(getArguments().getString(ARG_SECTION));
    Log.d("InfoView1", infoData1);
    return info1View;
}
 }

    public static class Information2 extends Fragment {

        public static final String ARG_SECTION = "section_number";

        public Information2(){

    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View info2View = inflater.inflate(
                R.layout.Information2, container, false);

        InfoView2 = (TextView) info2View
                .findViewById(R.id.info2);
        InfoView2.setText(getArguments().getString(ARG_SECTION));
        Log.d("InfoView2", infoData2);
        return info2View;
    }
}

    public static class Information3 extends Fragment {

        public static final String ARG_SECTION = "section_number";

        public Information3() {

        }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View info3View = inflater.inflate(
                R.layout.Information3, container, false);

        InfoView3 = (TextView) info3View
                .findViewById(R.id.info3);
        InfoView3.setText(getArguments().getString(ARG_SECTION));
        Log.d("BatteryStatView", infoData3);
        return info3View;
    }
    }

    @Override
    public void onResume() {
        super.onResume();       
        startService(intent);
        registerReceiver(broadcastReceiver, new IntentFilter(BroadcastService.BROADCAST_ACTION));
    }

    @Override
    public void onPause() {
        super.onPause();
        unregisterReceiver(broadcastReceiver);
        stopService(intent); 

    }
}