Страница 6 из 14

Re: Урок 21. Создание и вызов Activity

Добавлено: 08 авг 2013, 19:31
anber
foomkin писал(а):Сделал все по уроку - получилось, добавил еще две активити вызываемые из мэинактивити, т.е. к активити ту добавил еще две.
В мэин активити прописал их как:
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnSams:
Intent intent = new Intent(this, SamsActivity.class);
startActivity(intent);

case R.id.btnHtc:
Intent intent2 = new Intent(this, HtcActivity.class);
startActivity(intent2);

case R.id.btnLg:
Intent intent3 = new Intent(this, LgActivity.class);
startActivity(intent3);

Все работает, только в приложении при переходе на них показывает неправильное содержимое их. Причем в одной, все 3 содержимых по очереди, в другой две, в третьей 1 и то не та. Что в коде не так? Подозреваю, что с интентами надо было поступать как то иначе чем просто обозвать их по разному
Не ясно в чем проблема.
Нажимаешь на кнопку, переход на другое активити происходит но что именно идет не так? Как должно быть?
И да, приведи код SamsActivity, HtcActivity и LgActivity

Re: Урок 21. Создание и вызов Activity

Добавлено: 08 авг 2013, 20:29
foomkin
Должно в каждом активити открываться свое окно с лист вью и текствью. А там в самс лджи открывается, в элджи все все три по очереди при нажимании кнопки бэк, в хтц две.
Вот тест каждой из этих активити:

package ru.foomkin.mobcat;

import android.app.Activity;
import android.os.Bundle;

public class HtcActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.htc);
}
}
Остальные такие же

Re: Урок 21. Создание и вызов Activity

Добавлено: 09 авг 2013, 12:27
anber
foomkin писал(а):Должно в каждом активити открываться свое окно с лист вью и текствью. А там в самс лджи открывается, в элджи все все три по очереди при нажимании кнопки бэк, в хтц две.
Вот тест каждой из этих активити:

package ru.foomkin.mobcat;

import android.app.Activity;
import android.os.Bundle;

public class HtcActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.htc);
}
}
Остальные такие же
Почитай внимательно про оператор switch. В частности обрати внимание на слово break
http://developer.alexanderklimov.ru/and ... switch.php

Re: Урок 21. Создание и вызов Activity

Добавлено: 11 авг 2013, 15:32
foomkin
Спасибо большое, помогло.

Re: Урок 21. Создание и вызов Activity

Добавлено: 13 авг 2013, 13:28
once2go
помогите решить!
В общем такая ситуация
В методе онклик вызываю
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
стартАктивити(интент);
this.finish();
все бі ничего но при переходе на вторую активность со своим лейаутом софтина как вылетает на секунду(происходит такой себе неловкий переход с отображением рабочего стола)
Можно ли сделать какой то дилей или закрывать первую активность с другой(примеры со стак овера почему то не работаюТ =( )

Re: Урок 21. Создание и вызов Activity

Добавлено: 13 авг 2013, 14:31
Mikhail_dev
Попробуй флаг дать активности в манифесте
android:noHistory="true"

Re: Урок 21. Создание и вызов Activity

Добавлено: 13 авг 2013, 15:01
once2go
no-- писал(а):Попробуй флаг дать активности в манифесте
android:noHistory="true"
не помогло((

Re: Урок 21. Создание и вызов Activity

Добавлено: 13 авг 2013, 15:40
once2go
no-- писал(а):Попробуй флаг дать активности в манифесте
android:noHistory="true"
что характерно что баг этот вылетает при срабатывании метода finish при чем не важно в какой активности он был и для какого класса применялся...
к примеру запустилась первая активность. в коде третей активности вызвал метод финиш для первой активности (вылет) при этом при вызове второй активности с первой для первой делал
doPause();
doStop();
doDestroy();
при этом задержка между переходами стала короче(но не исчезла =( )

Re: Урок 21. Создание и вызов Activity

Добавлено: 13 авг 2013, 15:43
anber
once2go писал(а):
no-- писал(а):Попробуй флаг дать активности в манифесте
android:noHistory="true"
не помогло((
При этом this.finish(); убери

Re: Урок 21. Создание и вызов Activity

Добавлено: 13 авг 2013, 16:47
once2go
Всем кто помог +1 к счастью)

Спасибо )) Реально помогло....не знаю что бы я без вас делал)))
При чем эту проблуму пытался побороть уже давно((

Re: Урок 21. Создание и вызов Activity

Добавлено: 24 авг 2013, 18:07
Ptenchik
А можно теоретический вопрос:
А вот если я к примеру делаю интерактивную детскую сказку,со всякими движущимися/пищащими элементами, страниц эдак в 50. То это получается мне надо делать 50 activity.java, 50 xml страниц, добавлять все 50 активити в манифест? Или я чего-то не догоняю?
А если к примеру бекграунд одинаковый и менять только интеракт. элементы, все равно делать 50xml, и только одинаковый бекграунд из ресурсов везде подставлять?
Если юзать ImageSwitcher, там только одну картинку вроде можно вставить и менять, а у меня везде разное кол-во элементов.
Короче: если у меня 50 разных страниц(картинок), то делать 50xmlов?
И можно ли как-то только элементы и их кол-во менять?

Re: Урок 21. Создание и вызов Activity

Добавлено: 24 авг 2013, 22:53
Foenix
да ты что, менять.. запутаешься ты в них, поди
Скорее всего, для сказки подойдет компонент вьюпейджер, но и там придется делать xml фрагментов.

Re: Урок 21. Создание и вызов Activity

Добавлено: 26 авг 2013, 17:33
mozilalvfg
Делал по уроку всё хорошо. Попробовал добавить 3 activity и изменил 2 activity как в 1 activity, поменял даные под 2 activity. Eclips показывает ошибку в коде "btnActFree.setOnClickListener(this);"
вод код 2 activity, в манифест всё добавил. В чем моя ошибка?

Код: Выделить всё

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


public class ActivityTwo extends Activity {
	  Button btnActFree;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.two);
   
  btnActFree = (Button) findViewById(R.id.btnActFree);
  btnActFree.setOnClickListener(this);
}
		

  public void onClick(View v) {
    switch (v.getId()) {
    case R.id.btnActTwo:
        Intent intent = new Intent(this, Activityfree.class);
        startActivity(intent);
      break;
      
    case R.id.btnActFree:

      break;    
      
    default:
      break;
    }
  }
 
}
two.xml

Код: Выделить всё

<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">
<Button
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:text="Go to Activity Free"
 android:id="@+id/btnActFree">
</Button>
</LinearLayout>

Re: Урок 21. Создание и вызов Activity

Добавлено: 26 авг 2013, 17:45
mozilalvfg
а при таком коде

Код: Выделить всё

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;


public class ActivityTwo extends Activity {
	  Button btnActFree;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.two);
   
  btnActFree = (Button) findViewById(R.id.btnActFree);

}
		

  public void onClickbtnActFree() {
    
        Intent intent = new Intent(this, Activityfree.class);
        startActivity(intent);
     
    }
  }

выводит такую ошибку

Код: Выделить всё

 Shutting down VM
threadid=1: thread exiting with uncaught exception (group=0xb60324f0)
 FATAL EXCEPTION: main java.lang.IllegalStateException: Could not find a method onClickbtnActFree(View) in the activity class com.example.p0211_twoactivity.ActivityTwo for onClick handler on view class android.widget.Button with id 'btnActFree'
 	at android.view.View$1.onClick(View.java:2131)
 	at android.view.View.performClick(View.java:2485)
	at android.view.View$PerformClick.run(View.java:9080)
 	at android.os.Handler.handleCallback(Handler.java:587)
	at android.os.Handler.dispatchMessage(Handler.java:92)
	at android.os.Looper.loop(Looper.java:130)
 	at android.app.ActivityThread.main(ActivityThread.java:3683)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:507)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
	at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.NoSuchMethodException: onClickbtnActFree
 	at java.lang.ClassCache.findMethodByName(ClassCache.java:247)
	at java.lang.Class.getMethod(Class.java:962)
	at android.view.View$1.onClick(View.java:2124)
 	... 11 more

Re: Урок 21. Создание и вызов Activity

Добавлено: 26 авг 2013, 17:48
9bagel
mozilalvfg писал(а):а при таком коде

Код: Выделить всё

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;


public class ActivityTwo extends Activity {
	  Button btnActFree;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.two);
   
  btnActFree = (Button) findViewById(R.id.btnActFree);

}
		

  public void onClickbtnActFree() {
    
        Intent intent = new Intent(this, Activityfree.class);
        startActivity(intent);
     
    }
  }

выводит такую ошибку

Код: Выделить всё

 Shutting down VM
threadid=1: thread exiting with uncaught exception (group=0xb60324f0)
 FATAL EXCEPTION: main java.lang.IllegalStateException: Could not find a method onClickbtnActFree(View) in the activity class com.example.p0211_twoactivity.ActivityTwo for onClick handler on view class android.widget.Button with id 'btnActFree'
 	at android.view.View$1.onClick(View.java:2131)
 	at android.view.View.performClick(View.java:2485)
	at android.view.View$PerformClick.run(View.java:9080)
 	at android.os.Handler.handleCallback(Handler.java:587)
	at android.os.Handler.dispatchMessage(Handler.java:92)
	at android.os.Looper.loop(Looper.java:130)
 	at android.app.ActivityThread.main(ActivityThread.java:3683)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:507)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
	at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.NoSuchMethodException: onClickbtnActFree
 	at java.lang.ClassCache.findMethodByName(ClassCache.java:247)
	at java.lang.Class.getMethod(Class.java:962)
	at android.view.View$1.onClick(View.java:2124)
 	... 11 more
Вы забыли указать activity в качестве обработчика:
Вместо public class ActivityTwo extends Activity
Напишите public class ActivityTwo extends Activity implements OnClickListener

А во втором случае забыли добавить в параметр OnClick вьюшки onClickbtnActFree

Re: Урок 21. Создание и вызов Activity

Добавлено: 26 авг 2013, 18:07
mozilalvfg
9bagel писал(а):
mozilalvfg писал(а):а при таком коде

Код: Выделить всё

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.Button;


public class ActivityTwo extends Activity {
	  Button btnActFree;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.two);
   
  btnActFree = (Button) findViewById(R.id.btnActFree);

}
		

  public void onClickbtnActFree() {
    
        Intent intent = new Intent(this, Activityfree.class);
        startActivity(intent);
     
    }
  }

выводит такую ошибку

Код: Выделить всё

 Shutting down VM
threadid=1: thread exiting with uncaught exception (group=0xb60324f0)
 FATAL EXCEPTION: main java.lang.IllegalStateException: Could not find a method onClickbtnActFree(View) in the activity class com.example.p0211_twoactivity.ActivityTwo for onClick handler on view class android.widget.Button with id 'btnActFree'
 	at android.view.View$1.onClick(View.java:2131)
 	at android.view.View.performClick(View.java:2485)
	at android.view.View$PerformClick.run(View.java:9080)
 	at android.os.Handler.handleCallback(Handler.java:587)
	at android.os.Handler.dispatchMessage(Handler.java:92)
	at android.os.Looper.loop(Looper.java:130)
 	at android.app.ActivityThread.main(ActivityThread.java:3683)
	at java.lang.reflect.Method.invokeNative(Native Method)
	at java.lang.reflect.Method.invoke(Method.java:507)
	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
	at dalvik.system.NativeStart.main(Native Method)
 Caused by: java.lang.NoSuchMethodException: onClickbtnActFree
 	at java.lang.ClassCache.findMethodByName(ClassCache.java:247)
	at java.lang.Class.getMethod(Class.java:962)
	at android.view.View$1.onClick(View.java:2124)
 	... 11 more
Вы забыли указать activity в качестве обработчика:
Вместо public class ActivityTwo extends Activity
Напишите public class ActivityTwo extends Activity implements OnClickListener

А во втором случае забыли добавить в параметр OnClick вьюшки onClickbtnActFree
во втором варианте я добавил но всёрвано выдаёт туже ошибку

Код: Выделить всё

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent">

<Button
    android:id="@+id/btnActFree"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:onClick="onClickbtnActFree"
    android:text="Go to Activity Free" >

</Button>
</LinearLayout>

Re: Урок 21. Создание и вызов Activity

Добавлено: 13 сен 2013, 14:35
hard
Заранее извиняюсь не знал в какую тему написать. Нужен совет вот в каком вопросе:
Допустим имеется большое приложение и в файле MainActivity очень много кода, который усложняет чтение и понимание программы. Для упрощения создаю вспомогательный класс в который передаю MainActivity и в котором реализую нужные мне методы которые так же взаимодействуют с View(к примеру установка адаптера в listView act.listview.setAdapter(adapter)). Не приведет ли такой подход к проблемам и ошибкам?

Re: Урок 21. Создание и вызов Activity

Добавлено: 13 сен 2013, 15:24
Mikhail_dev
Вообще не должно привести. Принцип "разделяй и властвуй" никто не отменял. Делите на сущности, так сказать по смыслу код. Работа с настройками? Хорошо, сделаем (статический класс||синглтон) для работы с настройками. Менеджер для работы с интернетом? В отдельный класс.
Естественно что так лучше. НО!!! Вы должны помнить, что бывают такие вещи, как утечки. Если передаёте активность по коду, то НЕ ИСПОЛЬЗУЙТЕ ЕЁ КОНТЕКСТ! Возьмите контекст самого приложения посредством Activity.getApplicationContext. Просто если к примеру объект будет синглтоном и в синглтоне будет ссылка на какую-либо активность, то эта активность может висеть в памяти во время, когда не должна. Также в Toast не рекомендуется использовать контекст активности.

Re: Урок 21. Создание и вызов Activity

Добавлено: 13 сен 2013, 15:45
hard
спасибо большое за ответ.
Но я же не контекст передаю а активити для доступа к переменым и методам.

На счет контекста уже не раз слышу но не совсем еще понял. Суть в том что бы где это возможно использовать что то вроде:

Код: Выделить всё

public class ApplicationContext extends Application {

	private static Context context;

	public void onCreate() {
		super.onCreate();
		ApplicationContext.context = getApplicationContext();
	}

	public static Context getAppContext() {
		return ApplicationContext.context;
	}

}
И еще вопрос если позволите. В чем минусы использования вот этого кода для блокировки пересоздания активити при повороте экрана

Код: Выделить всё

android:configChanges="keyboardHidden|orientation|screenSize"

Просто у меня очень много диалогов и отслеживать всех их...ну не получается

Re: Урок 21. Создание и вызов Activity

Добавлено: 13 сен 2013, 18:43
Mikhail_dev
На счет кода, всё верно. Я лично так и делаю, также получаю контекст приложения.
И еще вопрос если позволите. В чем минусы использования вот этого кода для блокировки пересоздания активити при повороте экрана
В общем минусы, на сколько помню в том, что если что-то делать в асинхронном запросе, то можно получить проблемы при поворотах. Я пару месяцев назад читал статейку на зарубежном сайте, там как раз эта тема обсуждалась. Сами АндроидоРазрабы не рекомендут использовать android:configChanges="keyboardHidden|orientation|screenSize"
Просто у меня очень много диалогов и отслеживать всех их...ну не получается
Диалогов каких? AlertDialog? FragmentDialog?