Может помочь, если вы скопируете сюда полностью код класса, в котором возникает ошибка, и лог с ошибкой.AKhorevich писал(а):У меня выдает java.lang.NullPointerException. По всей видимости ActionBar bar = getActionBar(); возвращает null. Как это решить?
Урок 108. Android 3. ActionBar. Навигация - табы и выпадающий список
Re: Урок 108. Android 3. ActionBar. Навигация - табы и выпад
Re: Урок 108. Android 3. ActionBar. Навигация - табы и выпад
Всем здравствуйте.
Странная у меня ситуация получается. У меня в android studio ошибка у знакомого в Eclipse работает
Беру код с урока копирую его в MainActivity
Файл main.xml без изменений, оставляю стандартный:
Запускаю тестирование, приложение пытается запуститься на телефоне, но ему это не удается с уведомлением "в приложении произошла ошибка"
тестирую на своем HTC ONE X+ версия Android 4.2.2 API 17
В логам выдает вот это:
Странная у меня ситуация получается. У меня в android studio ошибка у знакомого в Eclipse работает
Беру код с урока копирую его в MainActivity
Код: Выделить всё
import android.app.ActionBar;
import android.app.ActionBar.Tab;
import android.app.Activity;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.util.Log;
public class MainActivity extends Activity implements ActionBar.TabListener {
final String LOG_TAG = "myLogs";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ActionBar bar = getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Tab tab = bar.newTab();
tab.setText("tab1");
tab.setTabListener(this);
bar.addTab(tab);
tab = bar.newTab();
tab.setText("tab2");
tab.setTabListener(this);
bar.addTab(tab);
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
Log.d(LOG_TAG, "reselected tab: " + tab.getText());
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
Log.d(LOG_TAG, "selected tab: " + tab.getText());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
Log.d(LOG_TAG, "unselected tab: " + tab.getText());
}
}
Код: Выделить всё
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
<TextView android:text="@string/hello_world" android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
тестирую на своем HTC ONE X+ версия Android 4.2.2 API 17
В логам выдает вот это:
Код: Выделить всё
02-12 09:33:35.291 26168-26168/com.example.brook.newnew E/AndroidRuntime﹕ FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.brook.newnew/com.example.brook.newnew.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2463)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520)
at android.app.ActivityThread.access$600(ActivityThread.java:162)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:5751)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.example.brook.newnew.MainActivity.onCreate(MainActivity.java:21)
at android.app.Activity.performCreate(Activity.java:5165)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1103)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2419)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520)
at android.app.ActivityThread.access$600(ActivityThread.java:162)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:5751)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
at dalvik.system.NativeStart.main(Native Method)
Re: Урок 108. Android 3. ActionBar. Навигация - табы и выпад
Вот решение проблемы о которой я выше писал, может кому понадобится http://stackoverflow.com/questions/2825 ... tactionbar
Re: Урок 108. Android 3. ActionBar. Навигация - табы и выпад
Подскажите пожалуйста, после создания данных табов, как я могу дальше добавлять в них текст/кнопки и т.д..?!
Re: Урок 108. Android 3. ActionBar. Навигация - табы и выпад
Доброго времени суток,
не запускается первая часть урока, ошибка возникает на строчке
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Среда разработки Android Studio.
Помогите разобраться в чем может быть проблема?
не запускается первая часть урока, ошибка возникает на строчке
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
Среда разработки Android Studio.
Помогите разобраться в чем может быть проблема?
Re: Урок 108. Android 3. ActionBar. Навигация - табы и выпад
не можем.
R.id.team
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198
-
- Сообщения: 15
- Зарегистрирован: 31 мар 2015, 15:17
Re: Урок 108. Android 3. ActionBar. Навигация - табы и выпад
Используй android.support.v7.app.ActionBar вместо обычного. Должно помочь. Вот весь код рабочего активити:
Код: Выделить всё
public class MainActivity extends ActionBarActivity implements android.support.v7.app.ActionBar.TabListener {
final String LOG_TAG = "myLogs";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
android.support.v7.app.ActionBar bar = getSupportActionBar();
bar.setNavigationMode(android.support.v7.app.ActionBar.NAVIGATION_MODE_TABS);
android.support.v7.app.ActionBar.Tab tab = bar.newTab();
tab.setText("Tab 1");
tab.setTabListener(this);
bar.addTab(tab);
tab = bar.newTab();
tab.setText("Tab 2");
tab.setTabListener(this);
bar.addTab(tab);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
@Override
public void onTabSelected(android.support.v7.app.ActionBar.Tab tab, android.support.v4.app.FragmentTransaction fragmentTransaction) {
Log.d(LOG_TAG, "selected tab: " + tab.getText());
}
@Override
public void onTabUnselected(android.support.v7.app.ActionBar.Tab tab, android.support.v4.app.FragmentTransaction fragmentTransaction) {
Log.d(LOG_TAG, "unselected tab: " + tab.getText());
}
@Override
public void onTabReselected(android.support.v7.app.ActionBar.Tab tab, android.support.v4.app.FragmentTransaction fragmentTransaction) {
Log.d(LOG_TAG, "reselected tab: " + tab.getText());
}
}
-
- Сообщения: 5
- Зарегистрирован: 17 июл 2015, 14:17
Re: Урок 108. Android 3. ActionBar. Навигация - табы и выпад
Здравствуйте. В моем приложении 3 таба. За каждый отвечает свой фрагмент.
Возможно ли для каждого фрагмента поставить someEventListener? Если да - как?
Код: Выделить всё
public Fragment getItem(int position) {
Fragment fragment = null;
switch(position){
case 0:
fragment = new NetbookFragment();
break;
case 1:
fragment = new NotebookFragment();
break;
case 2:
fragment = new NotepadFragment();
}
return fragment;
}
Re: Урок 108. Android 3. ActionBar. Навигация - табы и выпад
Привет!
Зашел в тупик. Два дня уже читаю по результаты поиска по actionbar tab fragment savedInstanceState и подобным.
У меня есть MainActivity с 3 закладками в ActionBar.
1 закладка - карта
2 закладка - ListFragment1
3 закладка - ListFragment2
По клику на элементе ListFragment1 я заменяю фрагмент на ListFragment3. И все прекрасно, пока не поворачиваю экран.
При перевороте у меня на 2 закладке отображаются и ListFragment1 и ListFragment3.
Подскажите, пожалуйста, что почитать, посмотреть.
MainActivity как в уроке
MainTabListener тоже как в уроке не буду его приводить
CatalogFragment (фрагмент, который на закладке 2)
Кстати, когда делаю только fragmentTransaction.replace(android.R.id.tabcontent, citiesFragment), то "старый" фрагмент остается, по-этому удалил.
Но при повороте экрана я его опять создаю...
Зашел в тупик. Два дня уже читаю по результаты поиска по actionbar tab fragment savedInstanceState и подобным.
У меня есть MainActivity с 3 закладками в ActionBar.
1 закладка - карта
2 закладка - ListFragment1
3 закладка - ListFragment2
По клику на элементе ListFragment1 я заменяю фрагмент на ListFragment3. И все прекрасно, пока не поворачиваю экран.
При перевороте у меня на 2 закладке отображаются и ListFragment1 и ListFragment3.
Подскажите, пожалуйста, что почитать, посмотреть.
MainActivity как в уроке
Код: Выделить всё
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bar = getActionBar();
bar.setDisplayShowTitleEnabled(false);
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
tab = bar.newTab();
tab.setText(getString(R.string.title_map_activity));
tab.setTabListener(new MainTabListener<MapFragment>(this, MAP_TAG, MapFragment.class));
bar.addTab(tab);
tab = bar.newTab();
tab.setText(getString(R.string.title_catalog_activity));
tab.setTabListener(new MainTabListener<CatalogFragment>(this, CATALOG_TAG, CatalogFragment.class));
bar.addTab(tab);
tab = bar.newTab();
tab.setText(getString(R.string.title_my_activity));
tab.setTabListener(new MainTabListener<MyHikesFragment>(this, MYHIKES_TAG, MyHikesFragment.class));
bar.addTab(tab);
if (savedInstanceState != null){
int index = savedInstanceState.getInt("selected_tab_index", 0);
bar.setSelectedNavigationItem(index);
}else {
bar.setSelectedNavigationItem(prefs.getInt("TAB_INDEX", 0));
}
}
CatalogFragment (фрагмент, который на закладке 2)
Код: Выделить всё
ublic class CatalogFragment extends ListFragment {
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
CountryArrayAdapter adapter = new CountryArrayAdapter(getActivity(), countryListGenerator());
setListAdapter(adapter);
}
@Override
public void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
CitiesFragment citiesFragment = new CitiesFragment();
Bundle bundle = new Bundle();
bundle.putString("COUNTRY", countryListGenerator().get(position).getCountryName());
citiesFragment.setArguments(bundle);
FragmentTransaction fragmentTransaction = getActivity().getFragmentManager().beginTransaction();
fragmentTransaction.remove(this);
fragmentTransaction.replace(android.R.id.tabcontent, citiesFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
Toast.makeText(getActivity(), "position = " + getActivity().getActionBar().getTabAt(1).getText(), Toast.LENGTH_SHORT).show();
}
private ArrayList<Country> countryListGenerator (){
int max = 25;
ArrayList<Country> countries = new ArrayList<Country>();
for (int i = 0; i <= max; i ++) {
Country c = new Country();
c.setCountryName("Country" + i);
c.setHikesNumber(i + i +" hikes");
c.setFlag(getResources().getDrawable(R.drawable.russia));
countries.add(c);
}
return countries;
}
}
Но при повороте экрана я его опять создаю...
Re: Урок 108. Android 3. ActionBar. Навигация - табы и выпад
У всех у кого выходит ошибка java.lang.NullPointerException на строке
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
надо просто добавить в манифест
android:theme="@android:style/Theme.Holo.Light"
вместо
android:theme="@style/AppTheme"
по крайней мере у меня оно заработало
может быть у меня проблема в том что стоит не чистый андроид, а MIUI 7 - оболочка над 5 андроидом для смартфонов Xiaomi
правда в статусбаре (в самом низу Андроид Студио) выходило предупреждение, что
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
может вернуть java.lang.NullPointerException
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
надо просто добавить в манифест
android:theme="@android:style/Theme.Holo.Light"
вместо
android:theme="@style/AppTheme"
по крайней мере у меня оно заработало
может быть у меня проблема в том что стоит не чистый андроид, а MIUI 7 - оболочка над 5 андроидом для смартфонов Xiaomi
правда в статусбаре (в самом низу Андроид Студио) выходило предупреждение, что
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
может вернуть java.lang.NullPointerException