Не могу открыть class в проекте с TabHost

Ответить
AlexVinn
Сообщения: 81
Зарегистрирован: 04 апр 2014, 04:56

Не могу открыть class в проекте с TabHost

Сообщение AlexVinn » 27 май 2014, 16:49

Переделываю проектс ActionBarActivity c PageView в просто TabHost.
Пишет ошибку при открытии класса Таба.

Error - Caused by: java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.tabhost/com.example.tabhost.Tab1}: java.lang.ClassCastException: com.example.tabhost.Tab1

Плз, хелп.

MainActivity.java
[syntax=java5]...

@SuppressWarnings("deprecation")
public class MainActivity extends TabActivity {

...

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

...

Resources res = getResources(); // Resource object to get Drawables
TabHost tabHost = getTabHost(); // The activity TabHost
TabHost.TabSpec spec; // Reusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab

// Create an Intent to launch an Activity for the tab (to be reused)
intent = new Intent().setClass(this, Tab1.class);
spec = tabHost.newTabSpec("home")
.setIndicator("HOME", res.getDrawable(R.drawable.ic_tab1_1))
.setContent(intent);
tabHost.addTab(spec); <<<<<<<<<<<<<<<< ERROR <<<<<<<<<<<<<<<<<<<<

...

// set tab which one you want open first time 0 or 1 or 2
//tabHost.setCurrentTab(0);

...
[/syntax]

Tab1.java
[syntax=java5]...

public class Tab1 extends Fragment {
ListView list;
LazyAdapter adapter;

ArrayList<HashMap<String, String>> itemList = new ArrayList<HashMap<String, String>>();

public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);


Document doc = MainActivity.parser.getDomElement(MainActivity.xml);
NodeList nl = doc.getElementsByTagName("tab1");

...
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View rootView = inflater.inflate(R.layout.tab1, container, false);

list = (ListView) rootView.findViewById(R.id.list);

// Click event for single list row
list.setOnItemClickListener(new OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {

@SuppressWarnings("unchecked")
String sss = ((Map<String, String>) adapter.getItem(position))
.get(MainActivity.KEY_LINK);
Log.d("myLogs", sss);

Uri address = Uri.parse(sss);
Intent openlink = new Intent(Intent.ACTION_VIEW, address);
startActivity(openlink);
}
});

return rootView;
}[/syntax]
Тут должна быть подпись.

yanchumak
Сообщения: 31
Зарегистрирован: 19 май 2014, 10:50

Re: Не могу открыть class в проекте с TabHost

Сообщение yanchumak » 27 май 2014, 17:45

Вместо Fragment тебе нужен FragmentActivity или Activity,что бы указать их в манифесте, на 99% уверен,что ексепшен по поводу отсутствия описания окна в манифесте

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Не могу открыть class в проекте с TabHost

Сообщение klblk » 27 май 2014, 18:17

советую обратить внимание на http://startandroid.ru/ru/uroki/vse-uro ... pisok.html
из забыть про TabActivity.

AlexVinn
Сообщения: 81
Зарегистрирован: 04 апр 2014, 04:56

Re: Не могу открыть class в проекте с TabHost

Сообщение AlexVinn » 27 май 2014, 19:45

Вообще запутался... Сделал табы с ActionBar и ViewPager-ом (всё работало), оказалось что в ViewPager нельзя вставить AdMob блок вниз (или можно ?)... Как сделать что бы табы были Fragment ?
Так что бы этот рабочий проект изменить.
Переделываю проект с ActionBar и PageView на что-то во что можно AdMob вставить....
Каша в голове ппц.
Есть Табы (Fragment) есть TabsPagerAdapter (FragmentPagerAdapter), ну и маинактивити.
Скажите как можно переделать проект ? Какая схема ?
Я думаю, что можно просто убрать ViewPager и всё должно работать. Хелп, плз. Три дня голова кипит.
Тут должна быть подпись.

AlexVinn
Сообщения: 81
Зарегистрирован: 04 апр 2014, 04:56

Re: Не могу открыть class в проекте с TabHost

Сообщение AlexVinn » 27 май 2014, 20:54

ActionBar с API 11 или это уже сейчас не критично ?
klblk писал(а):советую обратить внимание на http://startandroid.ru/ru/uroki/vse-uro ... pisok.html
из забыть про TabActivity.
Тут должна быть подпись.

Аватара пользователя
klblk
Сообщения: 1097
Зарегистрирован: 18 окт 2012, 11:17
Откуда: г. Красноярск

Re: Не могу открыть class в проекте с TabHost

Сообщение klblk » 28 май 2014, 05:50

https://developer.android.com/intl/ru/a ... index.html
17% устройств критично? решать вам. (с каждым следующем месяцем процент будет только уменьшаться, я считаю что новые приложения можно спокойно делать api 14+).
ну и можно использовать для совместимости SherlockActionBar или android-support-v7-appcompat.

по поводу AdMod можете попробовать разместить баннер поверх ViewPager'а (используя FrameLayout). Либо, кто-то предлагал, вывести ViewPager в отдельный фрагмент, не пробовал, но кажется должно сработать. Еще вариант можно попробовать сделать кастомный ViewPager (по умолчанию у он игнорирует атрибут "android:layout_height" и всегда используется "match_parent", поправьте если ошибаюсь).

Ответить