Пишу музыкальный плеер. Есть два элемента в ViewPager. Как получить к ним доступ из MainActivity? Мне нужно заполнить DragSortListView, но при таком раскладе в onCreate вылетает ошибка.
DragSortListView PlaylistView = (DragSortListView) findViewById(R.id.playlist);
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/root_view_main"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.jonikevseenko.im.IMAPTabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="?attr/actionBarSize"
android:background="@color/colorPrimaryDark"
android:visibility="gone"
app:tabIndicatorColor="@color/colorAccent" />
<android.support.v4.view.ViewPager
android:id="@+id/viewpager_main"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tab_layout" />
</RelativeLayout>
playlist_tab.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:dslv="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/toolbarplaying"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_alignParentBottom="false"
android:background="?attr/colorPrimary">
<ImageButton
android:id="@+id/morePlaylist"
style="?android:attr/borderlessButtonStyle"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_alignParentRight="true"
android:layout_weight="1"
android:background="@drawable/button_background"
android:minHeight="?attr/actionBarSize"
android:minWidth="?attr/actionBarSize"
dslv:srcCompat="@drawable/ic_more" />
<ImageButton
android:id="@+id/menuDrawerOpenPlaylist"
style="?android:attr/borderlessButtonStyle"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="false"
android:background="@drawable/button_background"
android:minHeight="?attr/actionBarSize"
android:minWidth="?attr/actionBarSize"
android:onClick="onClickMenu"
app:srcCompat="@drawable/ic_menu_white_48dp"
dslv:srcCompat="@drawable/ic_menu" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_toLeftOf="@+id/morePlaylist"
android:layout_toRightOf="@+id/menuDrawerOpenPlaylist"
android:orientation="vertical">
<TextView
android:id="@+id/titlePlaylist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginTop="2dp"
android:layout_weight="1"
android:singleLine="true"
android:text="Title text"
android:textColor="@color/material_drawer_background"
android:textSize="15dp" />
<TextView
android:id="@+id/subtitlePlaylist"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_weight="1"
android:singleLine="true"
android:text="Title text"
android:textColor="@color/black_colorText"
android:textSize="13dp" />
</LinearLayout>
</RelativeLayout>
<com.mobeta.android.dslv.DragSortListView
android:id="@+id/playlist"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@+id/selectFilesLayout"
android:layout_below="@+id/toolbarplaying"
android:dividerHeight="1dp"
android:longClickable="true"
android:paddingBottom="0dp"
android:paddingLeft="0dp"
android:paddingTop="0dp"
dslv:collapsed_height="2dp"
dslv:drag_enabled="true"
dslv:drag_handle_id="@drawable/ic_folder_open_black_24dp"
dslv:drag_scroll_start="0.33"
dslv:drag_start_mode="onMove"
dslv:float_alpha="0.6"
dslv:max_drag_scroll_speed="0.5"
dslv:remove_enabled="true"
dslv:remove_mode="flingRemove"
dslv:slide_shuffle_speed="0.3"
dslv:sort_enabled="true"
dslv:track_drag_sort="false"
dslv:use_default_controller="true" />
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/selectFilesLayout"
android:layout_width="match_parent"
android:layout_height="65dp"
android:layout_alignParentBottom="true"
android:layout_alignParentTop="false"
android:layout_centerVertical="true"
android:background="?attr/colorPrimary"
android:visibility="visible">
<ImageButton
android:id="@+id/btnCompleteCheck"
style="?android:attr/borderlessButtonStyle"
android:layout_width="65dp"
android:layout_height="65dp"
android:layout_alignParentEnd="false"
android:layout_alignParentRight="false"
android:layout_centerVertical="false"
android:background="@drawable/button_background"
android:onClick="addFiles"
dslv:srcCompat="@drawable/ic_add" />
<ImageButton
android:id="@+id/btnRemove"
style="?android:attr/borderlessButtonStyle"
android:layout_width="65dp"
android:layout_height="65dp"
android:layout_alignParentTop="true"
android:layout_toEndOf="@+id/btnCompleteCheck"
android:layout_toRightOf="@+id/btnCompleteCheck"
android:background="@drawable/button_background"
android:onClick="remove"
dslv:srcCompat="@drawable/ic_remove" />
<ImageButton
android:id="@+id/dragSwitcher"
style="?android:attr/borderlessButtonStyle"
android:layout_width="65dp"
android:layout_height="65dp"
android:layout_alignParentEnd="false"
android:layout_alignParentRight="true"
android:layout_centerVertical="false"
android:background="@drawable/button_background"
android:onClick="drag"
dslv:srcCompat="@drawable/ic_sort" />
</RelativeLayout>
</RelativeLayout>
MainActivity.java
package com.jonikevseenko.im;
import android.content.Intent;
import android.os.Parcelable;
import android.support.design.widget.TabLayout;
import android.support.v4.view.ViewPager;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ImageButton;
import android.widget.TextView;
import android.widget.Toast;
import com.mikepenz.materialdrawer.Drawer;
import com.mikepenz.materialdrawer.DrawerBuilder;
import com.mikepenz.materialdrawer.model.DividerDrawerItem;
import com.mikepenz.materialdrawer.model.PrimaryDrawerItem;
import com.mikepenz.materialdrawer.model.SecondaryDrawerItem;
import com.mikepenz.materialdrawer.model.interfaces.IDrawerItem;
import com.mobeta.android.dslv.DragSortController;
import com.mobeta.android.dslv.DragSortListView;
import java.io.File;
import java.util.ArrayList;
public class MainActivity extends ActionBarActivity {
PrimaryDrawerItem ItemAdd, ItemOptions, itemPlaylist,itemExit;
SecondaryDrawerItem ItemPlaylists;
TextView titlep1,subtitlep1,titlep2,subtitlep2;
ArrayList<String> addedFiles = new ArrayList<>();
Drawer MainDrawer;
Intent addFiles;
private ViewPager mViewPager;
private IMAPTabAdapter mTabAdapter;
private IMAPTabLayout mTabLayout;
TabLayout.TabLayoutOnPageChangeListener tabLayoutOnPageChangeListener;
int targetPlaylist = 0;
final int RC_ADDFILES = 1;
ImageButton dragSwitch, removeSwitch;
Parcelable PlaylistInstanceState;
DragSortListView PlaylistView;
ArrayAdapter<String> adapter;
ArrayList<String> fileList = new ArrayList<>();
DragSortController controller;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
addFiles = new Intent(this,FileManager.class);
mViewPager = (ViewPager) findViewById(R.id.viewpager_main);
mTabLayout = (IMAPTabLayout) findViewById(R.id.tab_layout);
mTabAdapter = new IMAPTabAdapter(getSupportFragmentManager());
mViewPager.setAdapter(mTabAdapter);
mTabLayout.setupWithViewPager(mViewPager);
mTabLayout.createTabs();
tabLayoutOnPageChangeListener = new TabLayout.TabLayoutOnPageChangeListener(mTabLayout);
mViewPager.addOnPageChangeListener(tabLayoutOnPageChangeListener);
mTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
mViewPager.removeOnPageChangeListener(tabLayoutOnPageChangeListener);
mViewPager.setCurrentItem(tab.getPosition());
mViewPager.addOnPageChangeListener(tabLayoutOnPageChangeListener);
titlep1 = (TextView) findViewById(R.id.titlePlaying);
subtitlep1 = (TextView) findViewById(R.id.subtitlePlaying);
titlep2 = (TextView) findViewById(R.id.titlePlaylist);
subtitlep2 = (TextView) findViewById(R.id.subtitlePlaylist);
titlep1.setText("Title 1");
subtitlep1.setText("Add playlist");
titlep2.setText("Title 2");
subtitlep2.setText("Add files");
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
if(savedInstanceState!=null) {
}else {
PlaylistView = (DragSortListView) findViewById(R.id.playlist);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data == null) {return;}
addedFiles = data.getStringArrayListExtra("selectList");
loadPlaylist();
}
public void loadPlaylist(){
for (String file:addedFiles){
File f = new File(file);
fileList.add(f.getName());
}
adapter = new ArrayAdapter<String>(this, R.layout.item_playlist, R.id.itemNamePL, fileList);
PlaylistView.setDropListener(onDrop);
PlaylistView.setRemoveListener(onRemove);
PlaylistView.setAdapter(adapter);
controller = new DragSortController(PlaylistView);
controller.setDragHandleId(R.drawable.ic_sort);
controller.setClickRemoveId(R.drawable.ic_remove);
controller.setRemoveEnabled(false);
controller.setSortEnabled(true);
controller.setDragInitMode(1);
controller.setRemoveMode(1);
PlaylistView.setFloatViewManager(controller);
PlaylistView.setOnTouchListener(controller);
PlaylistView.setDragEnabled(false);
PlaylistView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
return true;
}
});
PlaylistView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView tx =(TextView) view.findViewById(R.id.itemNamePL);
Toast.makeText(getApplicationContext(),tx.getText(),Toast.LENGTH_SHORT).show();
}
});
}
public void addFiles(View v){
startActivityForResult(addFiles,RC_ADDFILES);
}
}
IMAPTabAdapter.java
package com.jonikevseenko.im;
import android.support.v4.app.FragmentStatePagerAdapter;
public class IMAPTabAdapter extends FragmentStatePagerAdapter {
public IMAPTabAdapter(android.support.v4.app.FragmentManager fm) {
super(fm);
}
@Override
public android.support.v4.app.Fragment getItem(int position) {
switch (position) {
case 0:
return new PlayingTab();
case 1:
return new PlaylistTab();
default:
return null;
}
}
@Override
public int getCount() {
return 2;
}
}
IMAPTabLayout.java
package com.jonikevseenko.im;
import android.content.Context;
import android.support.design.widget.TabLayout;
import android.util.AttributeSet;
public class IMAPTabLayout extends TabLayout {
public IMAPTabLayout(Context context) {
super(context);
}
public IMAPTabLayout(Context context, AttributeSet attrs) {
super(context, attrs);
}
public IMAPTabLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
Tab pt;
Tab pt2;
public void createTabs() {
pt = newTab();
pt.setText("Бла бла 1");
addTab(pt);
pt2 = newTab();
pt2.setText("Бла бла 2");
addTab(pt2);
}
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости