Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
4 / 4 / 0
Регистрация: 30.07.2013
Сообщений: 101
1

Как правильно настроить ArrayAdapter?

30.07.2013, 15:33. Показов 1654. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Создаю своё первое приложение, потому вопрос новичка.
Статья, которой я руководствовался - поверхностная, потому во многом пришлось разбираться самому.
За основу было взято SlidingMenu и ActionBarSherlok, все библиотеки были подключены и приложение работает, подскажите как правильно настроить ArrayAdapter для переключения активностей с бокового меню?
Java
1
2
3
4
5
6
7
8
9
10
protected void setMenuItems(){
  String[] items = {"one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","cat","dog","fish","meat","health","good","father"};
  MainActivity.getSideMenuList().setAdapter(new ArrayAdapter<object>(MainActivity.getActivity(), R.layout.sidemenu_item, R.id.text1, items));
   }
 
protected void setTabs(){
  com.actionbarsherlock.app.ActionBar bar = getSupportActionBar();
  Tab tab1 = bar.newTab().setText("First tab");
   }
}
Последняя строчка (Tab tab1 = bar.newTab().setText("First tab");) выдаёт ошибку, что tab1 нигде не изпользуется, подскажите как его задействовать и переключиться на другую активность?

Полный код MainActivity:
Кликните здесь для просмотра всего текста
package com.example.ftest;

import android.os.Bundle;
import android.view.KeyEvent;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.actionbarsherlock.view.MenuItem;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;

public class MainActivity extends SherlockFragmentActivity {
protected static MainActivity instance;
protected static SlidingMenu menu;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTitle("Some title");
// set the content view
setContentView(R.layout.activity_main);
MainActivity.instance = this;
this.setMenu();
this.setTabs();
}


@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
if(getSideMenu().isMenuShowing())
menu.showContent();
else
getActivity().finish();

}
else if(keyCode == KeyEvent.KEYCODE_HOME){
this.menuToggle();
}
return false;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == android.R.id.home){
this.menuToggle();
}
return true;
}


/*METHODS*/
public void menuToggle(){
if(getSideMenu().isMenuShowing())
menu.showContent();
else
menu.showMenu();
}

public static MainActivity getActivity(){
return MainActivity.instance;
}

public static SlidingMenu getSideMenu(){
return MainActivity.menu;
}

public static ListView getSideMenuList(){
return (ListView) getActivity().findViewById(R.id.sidemenu);
}

protected void setMenu(){
SlidingMenu menu = new SlidingMenu(this);
menu.setMode(SlidingMenu.LEFT);
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
menu.setFadeDegree(0.35f);
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
menu.setMenu(R.layout.sidemenu);
menu.setBehindWidth(200);
menu.setBackgroundColor(0xFF333333);
getSupportActionBar().setHomeButtonEnabled(true);
MainActivity.menu = menu;
this.setMenuItems();
}

protected void setMenuItems(){
String[] items = {"one","two","three","four","five","six","seven","eight","nine","ten","eleven"," twelve","cat","dog","fish","meat","health","good","father"};
MainActivity.getSideMenuList().setAdapter(new ArrayAdapter<Object>(MainActivity.getActivity(), R.layout.sidemenu_item, R.id.text1, items));
}

protected void setTabs(){
com.actionbarsherlock.app.ActionBar bar = getSupportActionBar();
Tab tab1 = bar.newTab().setText("First tab");
}


}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.07.2013, 15:33
Ответы с готовыми решениями:

Как узнать позицию, выбранную в ArrayAdapter
Добрый день, дорогие друзья! Ситуация такая: есть элемент GridView, который заполняется...

Как правильно настроить Genymotion и где потом искать файлы базы данных?
Здравствуйте. В проекте нужно создать базу данных. Как правильно настроить Genymotion и где...

Как правильно настроить Wi-Fi сеть?
Доброго времени! Надо с настройкой вай-фай сети разобраться. Вернее правильно сконфигурировать,...

Как правильно настроить VPS
Категорически приветствую каждого бояра, кой изволил мой пост отведать! Прошу отозваться людей...

16
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
30.07.2013, 16:00 2
Цитата Сообщение от mcGurov Посмотреть сообщение
подскажите как его задействовать и переключиться на другую активность?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
public class TabNavigation extends SherlockFragmentActivity {
 
    String[] mTestArray;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           
           mTestArray = getResources().getStringArray(R.array.data_about);
 
           ActionBar bar = getSupportActionBar();
           bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
           ActionBar.Tab tab1 = bar.newTab();
           ActionBar.Tab tab2 = bar.newTab();
           ActionBar.Tab tab3 = bar.newTab();
           tab1.setText(mTestArray[0]);
           tab2.setText(mTestArray[1]);
           tab3.setText(mTestArray[2]);
           tab1.setTabListener(new MyTabListener());
           tab2.setTabListener(new MyTabListener());
           tab3.setTabListener(new MyTabListener());
           bar.addTab(tab1);
           bar.addTab(tab2);
           bar.addTab(tab3);
      }
     
      private class MyTabListener implements ActionBar.TabListener {
             
              @Override
              public void onTabSelected(Tab tab, FragmentTransaction ft) {
                     
                    if(tab.getPosition()==0){
                        
                       FragmentA frag = new FragmentA();
                       ft.replace(android.R.id.content, frag);
                     }
                     else if(tab.getPosition()==1) {
                         
                       FragmentB frag = new FragmentB();
                       ft.replace(android.R.id.content, frag);
                     }
                     else {
                         
                         FragmentC frag = new FragmentC();
                         ft.replace(android.R.id.content, frag);
                     }
               }
              
              @Override
              public void onTabUnselected(Tab tab, FragmentTransaction ft) {
 
              }
              
              @Override
              public void onTabReselected(Tab tab, FragmentTransaction ft) {
 
              }
       }
  }
2
4 / 4 / 0
Регистрация: 30.07.2013
Сообщений: 101
30.07.2013, 16:16  [ТС] 3
Спасибо за помощь! А нужно ли прописывать fragment в activity.xml?
0
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
30.07.2013, 16:18 4
Цитата Сообщение от mcGurov Посмотреть сообщение
Спасибо за помощь! А нужно ли прописывать fragment в activity.xml?
Каждый фрагмент отдельно идёт, вот пример фрагмента А
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class FragmentA extends Fragment {
 
    
       @Override
       public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle saved) {
              return inflater.inflate(R.layout.about, group, false);
         }
 
       @Override
       public void onActivityCreated (Bundle savedInstanceState) {
               super.onActivityCreated(savedInstanceState);
 
         }
  }
1
4 / 4 / 0
Регистрация: 30.07.2013
Сообщений: 101
31.07.2013, 00:34  [ТС] 5
Вроде всё прописал, только в месте:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
private class MyTabListener implements ActionBar.TabListener {
             
              @Override
              public void onTabSelected(Tab tab, FragmentTransaction ft) {
                     
                    if(tab.getPosition()==0){
                        
                       FragmentA frag = new FragmentA();
                       ft.replace(android.R.id.content, frag);
                     }
                     else if(tab.getPosition()==1) {
                         
                       FragmentB frag = new FragmentB();
                       ft.replace(android.R.id.content, frag);
                     }
                     else {
                         
                         FragmentC frag = new FragmentC();
                         ft.replace(android.R.id.content, frag);
                     }
               }
Выдаёт ошибку The method replace(int, Fragment) in the type FragmentTransaction is not applicable for the arguments (int, FragmentA)
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
31.07.2013, 00:42 6
FragmentA это точно фрагмент?
0
4 / 4 / 0
Регистрация: 30.07.2013
Сообщений: 101
31.07.2013, 01:16  [ТС] 7
Может не правильно создал фрагмент...
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
31.07.2013, 01:19 8
или с импортами накосячили.
1
4 / 4 / 0
Регистрация: 30.07.2013
Сообщений: 101
31.07.2013, 01:37  [ТС] 9
Фрагмент вроде в порядке, создал ява клас с именем FragmentA получилось:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.example.ftest;
 
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
 
public class FragmentA extends Fragment {
     
    
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle saved) {
           return inflater.inflate(R.layout.activity_window_a, group, false);
      }
 
    @Override
    public void onActivityCreated (Bundle savedInstanceState) {
            super.onActivityCreated(savedInstanceState);
 
      }
}
Правильно?

А как узнать накосячил с импортами или нет?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.example.ftest;
 
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
 
import com.actionbarsherlock.app.ActionBar;
import com.actionbarsherlock.app.ActionBar.Tab;
import com.actionbarsherlock.app.SherlockFragmentActivity;
 
public class TabNavigation extends SherlockFragmentActivity {
     
    String[] mTestArray;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           
           mTestArray = getResources().getStringArray(R.id.text1);
 
           ActionBar bar = getSupportActionBar();
           bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
           ActionBar.Tab tab1 = bar.newTab();
           ActionBar.Tab tab2 = bar.newTab();
           ActionBar.Tab tab3 = bar.newTab();
           tab1.setText(mTestArray[0]);
           tab2.setText(mTestArray[1]);
           tab3.setText(mTestArray[2]);
           tab1.setTabListener(new MyTabListener());
           tab2.setTabListener(new MyTabListener());
           tab3.setTabListener(new MyTabListener());
           bar.addTab(tab1);
           bar.addTab(tab2);
           bar.addTab(tab3);
      }
     
      private class MyTabListener implements ActionBar.TabListener {
             
              @Override
              public void onTabSelected(Tab tab, FragmentTransaction ft) {
                     
                    if(tab.getPosition()==0){
                        
                       FragmentA frag = new FragmentA();
                       ft.replace(android.R.id.content, frag);
                     }
                     else if(tab.getPosition()==1) {
                         
                       FragmentB frag = new FragmentB();
                       ft.replace(android.R.id.content, frag);
                     }
                     else {
                         
                         FragmentC frag = new FragmentC();
                         ft.replace(android.R.id.content, frag);
                     }
               }
              
              @Override
              public void onTabUnselected(Tab tab, FragmentTransaction ft) {
 
              }
              
              @Override
              public void onTabReselected(Tab tab, FragmentTransaction ft) {
 
              }
 
            
       }
  }
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
31.07.2013, 01:44 10
Цитата Сообщение от mcGurov Посмотреть сообщение
import android.support.v4.app.FragmentTransaction
Цитата Сообщение от mcGurov Посмотреть сообщение
import android.app.Fragment;
разве вас не смущают разные пакеты?
1
4 / 4 / 0
Регистрация: 30.07.2013
Сообщений: 101
01.08.2013, 09:35  [ТС] 11
Разобрался, спасибо! Ответьте пожалуйста на последний и главный вопрос: как теперь при выборе пункта меню перейти на новое окно? Код MainActivity в первом посте в спойлере.

Добавлено через 15 часов 38 минут
Как использовать то этот адаптер, приложение работает, но окна не листаются?!
0
4 / 4 / 0
Регистрация: 30.07.2013
Сообщений: 101
18.08.2013, 10:48  [ТС] 12
Вопрос все еще актуален, подскажите пожалуйста, кто знает.
0
106 / 106 / 1
Регистрация: 09.04.2012
Сообщений: 655
18.08.2013, 17:25 13
Цитата Сообщение от mcGurov Посмотреть сообщение
Вопрос все еще актуален, подскажите пожалуйста, кто знает.
Какой вопрос?
1
4 / 4 / 0
Регистрация: 30.07.2013
Сообщений: 101
18.08.2013, 21:35  [ТС] 14
Цитата Сообщение от mcGurov Посмотреть сообщение
Ответьте пожалуйста на последний и главный вопрос: как теперь при выборе пункта меню перейти на новое окно? Код MainActivity в первом посте в спойлере.
Как использовать то этот адаптер, приложение работает, но окна не листаются?!

Последняя строчка
Java
1
(Tab tab1 = bar.newTab().setText("First tab");)
выдаёт ошибку, что tab1 нигде не изпользуется, подскажите как его задействовать и переключиться на другую активность?
0
1162 / 986 / 1
Регистрация: 28.06.2012
Сообщений: 3,462
18.08.2013, 21:41 15
http://developer.android.com/g... .html#Tabs
1
4 / 4 / 0
Регистрация: 30.07.2013
Сообщений: 101
18.08.2013, 22:03  [ТС] 16
Я конечно дружу с английским языком более менее, но понять это...
Всё равно спасибо, что ответили...
0
4 / 4 / 0
Регистрация: 30.07.2013
Сообщений: 101
21.08.2013, 12:23  [ТС] 17
Разобрался, на самом деле мне надо было реализовать переключение между активностями с помощью бокового меню, вообщем смотрел не в то место кода, решение пришло посмотрев https://github.com/StevenRuden... ontentView, и безо всяких Sherlock'ов.
0
21.08.2013, 12:23
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.08.2013, 12:23
Помогаю со студенческими работами здесь

Как правильно настроить роутер?
Где брать настройки, которые нужно вводить?? Купили роутер, не можем подключить((((((

Как правильно настроить checkBox1_CheckedChanged?
При исходном запуске программы: 1. Режим - исходный. - checkBox1 - без галочки; - textBox2 -...

Как правильно настроить функцию Nz
Здравствуйте, подскажите пожалуйста Как правильно настроить функцию Nz для...

Как правильно настроить цикл?
у меня поле 9 на 9, по диагонали цикл идет for (int i=0,j=8;i&lt;8,j&gt;0;i++,j--) { if...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru