Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
Java 创建并加载活动后如何发送广播_Java_Android_Arraylist - Fatal编程技术网

Java 创建并加载活动后如何发送广播

Java 创建并加载活动后如何发送广播,java,android,arraylist,Java,Android,Arraylist,我正在创建一个音乐应用程序。我想从主要活动中发送广播。接受者也在主要活动中。此广播访问创建并显示为片段的Arraylist。每个片段都在寻呼机的视图中。查看寻呼机处于主要活动中 现在的问题是我正在发送广播以访问arraylist,Receiver接收(从主类的oncreate方法发送广播),但arraylist仍然没有创建,因此没有数据存在,因此显示错误。 在生成arraylist并创建片段之后,是否有任何方法可以发送广播 public class MainActivity extends Ap

我正在创建一个音乐应用程序。我想从主要活动中发送广播。接受者也在主要活动中。此广播访问创建并显示为片段的Arraylist。每个片段都在寻呼机的视图中。查看寻呼机处于主要活动中

现在的问题是我正在发送广播以访问arraylist,Receiver接收(从主类的oncreate方法发送广播),但arraylist仍然没有创建,因此没有数据存在,因此显示错误。 在生成arraylist并创建片段之后,是否有任何方法可以发送广播

public class MainActivity extends AppCompatActivity implements           SeekBar.OnSeekBarChangeListener{

private static int songEnded = 0;
View view;
Intent intent;
int a = 0, b = 0;
int x=0;
String[] path = Kaibee.getInstance().path;
ArrayList<collection> collections;
ArrayList<collection> songlist = Kaibee.getInstance().collections;
ArrayList<collection> fav = fav_collection.getInstance().fav;
TextView bsongname,starttime,endtime;
collectionAdapter collectionadapter=new favorite().mAdapter;
ImageView bsongimage;
int seekProgress;
ImageButton greenplay,favourite;
RelativeLayout songinfo, rl;
LinearLayout bottomll;
View bottomSheet;
FloatingActionButton fb;
MediaPlayer mediaPlayer;
ImageView bnext,bprev,playlist;
favlistdb mydb;
bottomsheetdb bdb;
playerservice ps;
favorite f=new favorite();
private BottomSheetBehavior mBottomSheetBehavior;
private SeekBar seekBar;
private int seekMax;
private Toolbar toolbar;
ActionBarDrawerToggle actionBarDrawerToggle;
DrawerLayout drawerLayout;

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent serviceIntent) {
        updateUI(serviceIntent);
    }
};
private IntentFilter bfilter = new IntentFilter("songclick");
private IntentFilter filter = new IntentFilter("songc");
//   private IntentFilter pfilter = new IntentFilter("bottomsheetbutton");
@Override
protected void onRestart() {
    super.onRestart();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);
    LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(bBroadcastReceiver, bfilter);
    LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(broadcastReceiver, filter);
    ps= new playerservice();

    bdb = new bottomsheetdb(this);
 Cursor result=bdb.getdata();
    if (result != null) {
        int pos=0;
        String listname = null;
        if (result.moveToFirst() ) {

            do{
            listname =  result.getString(result.getColumnIndex(bottomsheetdb.COL_2)) ;
                pos =(result.getInt(result.getColumnIndex(String.valueOf(bottomsheetdb.COL_3))));
                System.out.println("bottomsheet data "+listname+" "+pos);
                Intent minten = new Intent("songclick");
                minten.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
                minten.putExtra("position",pos);
                minten.putExtra("pause","play");
                minten.putExtra("collect",listname);
                LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(minten);
                ps.setupHandler();

            }while(result.moveToNext());

        }
    }
    else{bottomSheet.setVisibility(View.GONE);}




    // Create an adapter that knows which fragment should be shown on each page
    category_adapter adapter = new category_adapter(this, getSupportFragmentManager());

    // Set the adapter onto the view pager
    viewPager.setAdapter(adapter);
    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);

    // Connect the tab layout with the view pager. This will
    //   1. Update the tab layout when the view pager is swiped
    //   2. Update the view pager when a tab is selected
    //   3. Set the tab layout's tab names with the view pager's adapter's titles
    //      by calling onPageTitle()
    tabLayout.setupWithViewPager(viewPager);

    //setting data inside bottom sheet
    try {
        Intent serviceIntent = new Intent(this, playerservice.class);

        // --- set up seekbar intent for broadcasting new position to service ---
        intent = new Intent("seek_update");
        seekBar.setOnSeekBarChangeListener(this);
    }
    catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(getApplicationContext(),
                e.getClass().getName() + " " + e.getMessage(),
                Toast.LENGTH_LONG).show();
    }

}



public BroadcastReceiver bBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context c, Intent i) {
        x=0;
        String ss=i.getExtras().getString("collect");
        if(ss.equals("song_list_fragment")){collections=Kaibee.getInstance().collections;}
        else if(ss.equals("album")){collections=song_album_fetch.getInstance().albumsong;}
        else if(ss.equals("artist")){collections=artist_songs_fetch.getInstance().artistsong;}
        else if(ss.equals("genres")){collections=genres_songs_fetch.getInstance().genresong;
        }
        else{collections=fav_collection.getInstance().fav;}
        a = i.getExtras().getInt("position");
        collectionadapter=new collectionAdapter(getApplicationContext(),fav);
    //    collectionadapter=f.mAdapter;
        String s = i.getExtras().getString("pause");
        String play = "play", pause = "pause";
        if (s.equals(play)) {
            greenplay.setImageResource(R.drawable.ic_play_circle_filled);
            fb.setImageResource(R.drawable.ic_play_arrow);
        } else {
            greenplay.setImageResource(R.drawable.ic_pause_circle_outline);
            fb.setImageResource(R.drawable.ic_pause);
        }

        bottomSheet.setVisibility(View.VISIBLE);

    }
};






/**
 * Dispatch onResume() to fragments.  Note that for better inter-operation
 * with older versions of the platform, at the point of this call the
 * fragments attached to the activity are <em>not</em> resumed.  This means
 * that in some cases the previous state may still be saved, not allowing
 * fragment transactions that modify the state.  To correctly interact
 * with fragments in their proper state, you should instead override
 * {@link #onResumeFragments()}.
 */
@Override
protected void onResume() {
    super.onResume();

}

@Override
protected void onDestroy() {
    super.onDestroy();
    LocalBroadcastManager.getInstance(getApplicationContext()).unregisterReceiver(bBroadcastReceiver);
    LocalBroadcastManager.getInstance(getApplicationContext()).unregisterReceiver(broadcastReceiver);
}
public类MainActivity扩展AppCompatActivity实现SeekBar.OnSeekBarChangeListener{
私有静态int=0;
视图;
意图;
int a=0,b=0;
int x=0;
String[]path=Kaibee.getInstance().path;
阵列列表集合;
ArrayList songlist=Kaibee.getInstance().collections;
ArrayList fav=fav_collection.getInstance().fav;
TextView bsongname、starttime、endtime;
collectionAdapter collectionAdapter=新收藏夹().mAdapter;
图像视图;
国际搜索进程;
图像按钮绿色游戏,最爱;
RelativeLayout songinfo,rl;
线性布局底部;
查看底板;
浮动操作按钮fb;
媒体播放器;
ImageView bnext、bprev、播放列表;
favlistdb mydb;
下表DB bdb;
playerservice-ps;
favorite f=新收藏夹();
私人银行行为mBottomSheetBehavior;
私人SeekBar SeekBar;
私有int-seekMax;
专用工具栏;
ActionBarDrawerToggle ActionBarDrawerToggle;
抽屉布局抽屉布局;
private BroadcastReceiver BroadcastReceiver=新的BroadcastReceiver(){
@凌驾
公共void onReceive(上下文上下文、意图serviceIntent){
更新(服务意图);
}
};
私有IntentFilter bfilter=新IntentFilter(“歌曲点击”);
私有IntentFilter筛选器=新IntentFilter(“songc”);
//私有IntentFilter pfilter=新IntentFilter(“底部挡板按钮”);
@凌驾
受保护的void onRestart(){
super.onRestart();
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(bBroadcastReceiver,bfilter);
LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(broadcastReceiver,filter);
ps=新的playerservice();
bdb=新的底部挡板DB(本);
游标结果=bdb.getdata();
如果(结果!=null){
int pos=0;
字符串listname=null;
if(result.moveToFirst()){
做{
listname=result.getString(result.getColumnIndex(bottomsheetdb.COL_2));
pos=(result.getInt(result.getColumnIndex(String.valueOf(bottomsheetdb.COL_3)));
System.out.println(“底页数据”+listname+“”+pos);
Intent minten=新的Intent(“歌曲点击”);
minten.addFlags(Intent.FLAG包含停止的包);
minten.putExtra(“位置”,位置);
minten.putExtra(“暂停”、“播放”);
minten.putExtra(“collect”,列表名);
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(minten);
ps.setupHandler();
}while(result.moveToNext());
}
}
else{bottomSheet.setVisibility(View.GONE);}
//创建一个适配器,它知道应该在每个页面上显示哪个片段
category_adapter adapter=新的category_适配器(这个,getSupportFragmentManager());
//将适配器设置到视图寻呼机上
viewPager.setAdapter(适配器);
TabLayout TabLayout=(TabLayout)findViewById(R.id.tabs);
//将选项卡布局与视图寻呼机连接。这将
//1.在浏览寻呼机时更新选项卡布局
//2.选择选项卡时更新视图寻呼机
//3.使用视图寻呼机适配器的标题设置选项卡布局的选项卡名称
//通过调用onPageTitle()实现
tabLayout.setupWithViewPager(viewPager);
//在底部工作表中设置数据
试一试{
意向服务意向=新意向(此,playerservice.class);
//---设置seekbar意图,以便向服务广播新位置---
意向=新意向(“寻求更新”);
seekBar.setonseekbarchaneglistener(这个);
}
捕获(例外e){
e、 printStackTrace();
Toast.makeText(getApplicationContext(),
e、 getClass().getName()+“”+e.getMessage(),
Toast.LENGTH_LONG).show();
}
}
公共广播接收器bBroadcastReceiver=新广播接收器(){
@凌驾
接收时公共无效(上下文c,意图i){
x=0;
String ss=i.getExtras().getString(“collect”);
if(ss.equals(“歌曲列表片段”){collections=Kaibee.getInstance().collections;}
else if(ss.equals(“album”){collections=song\u album\u fetch.getInstance().albumsong;}
else if(ss.equals(“artist”){collections=artist\u songs\u fetch.getInstance().artistsong;}
else如果(ss.equals(“genres”){collections=genres\u songs\u fetch.getInstance().genresong;
}
else{collections=fav_collection.getInstance().fav;}
a=i.getExtras().getInt(“位置”);
collectionadapter=新的collectionadapter(getApplicationContext(),fav);
//collectionadapter=f.mAdapter;
字符串s=i.getExtras().getString(“暂停”);
字符串play=“play”,pause=“pause”;
如果(s.equals(play)){
greenplay.setImageResource(R.drawable.ic_play_circle_filled);
fb.setImageResource(R.drawable.ic\u play\u箭头);
}否则{
greenplay.setImageResource(R.drawable.ic\u pause\u circle\u outline);
fb.setImageResource(R.drawable.ic_pause);
}
bottomSheet.setVisibility(View.VISIBLE);
}
};
/**
*将onResume()分派给片段。请注意,为了更好地进行交互操作
*使用旧版本
private MyReceiver mMyReceiver;

private class mMyReceiver extends BroadcastReceiver {
    Context mContext;
    public mMyReceiver(Context context){
        mContext = context;
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(YOUR_ACTION)) {
            // get data from intent
        }
    }
}

private void registerReceiver() {
    if (mMyReceiver== null) {
        mMyReceiver= new MyReceiver(this);
    }

    IntentFilter intentFilter = new IntentFilter(YOUR_ACTION);
    registerReceiver(mMyReceiver, intentFilter);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
    // others
    registerReceiver();
}

@Override
protected void onDestroy() {
   if(mMyReceiver != null){
        unregisterReceiver(mMyReceiver );
    }
    super.onDestroy();
}
 registerReceiver(myReceiver, new IntentFilter("INTENT_NAME"));



 private BroadcastReceiver myReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {

    }
};
Intent intent = new Intent("INTENT_NAME");
sendBroadcast(intent);