2016-05-23 4 views
0

Я новичок в андроид развития так помочь мне:ANDROID: начиная новых виды деятельности, от нажатия кнопки

У меня есть файл XML с помощью 7 кнопок, названных как: btn_1 btn_2 ... btn_7

Вот activity_main.xml

<Button 
    android:layout_width="103dp" 
    android:layout_height="82dp" 
    android:id="@+id/btn_1" 
    android:layout_below="@+id/heading1" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:background="@mipmap/pic1" 
    style="@style/Base.Widget.AppCompat.Button.Borderless" 
    android:clickable="true" /> 

И вот MainActivity.java -

public class MainActivity extends AppCompatActivity { 

    private static Button btn1, btn2, btn3, btn4, btn5, btn6, btn7; 

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

    OnClickButtonListener(); 
    } 

    public void OnClickButtonListener() { 
    btn1 = (Button) findViewById(R.id.btn_1); 
    btn1.setOnClickListener(new View.OnClickListener() {@ 
     Override 
     public void onClick(View v) { 
     Intent intent_1 = new Intent(MainActivity.this, MainActivity_1.class); 
     startActivity(intent_1); 
     } 
    }); 


    btn2 = (Button) findViewById(R.id.btn_2); 
    btn2.setOnClickListener(new View.OnClickListener() {@ 
     Override 
     public void onClick(View v) { 
     Intent intent_2 = new Intent(MainActivity.this, MainActivity_2.class); 
     startActivity(intent_2); 
     } 
    }); 

    btn3 = (Button) findViewById(R.id.btn_3); 
    btn3.setOnClickListener(new View.OnClickListener() {@ 
     Override 
     public void onClick(View v) { 
     Intent intent_3 = new Intent(MainActivity.this, MainActivity_3.class); 
     startActivity(intent_3); 
     } 
    }); 

    btn4 = (Button) findViewById(R.id.btn_4); 
    btn4.setOnClickListener(new View.OnClickListener() {@ 
     Override 
     public void onClick(View v) { 
     Intent intent_4 = new Intent(MainActivity.this, MainActivity_4.class); 
     startActivity(intent_4); 
     } 
    }); 

    btn5 = (Button) findViewById(R.id.btn_5); 
    btn5.setOnClickListener(new View.OnClickListener() {@ 
     Override 
     public void onClick(View v) { 
     Intent intent_5 = new Intent(MainActivity.this, MainActivity_5.class); 
     startActivity(intent_5); 
     } 
    }); 

    btn6 = (Button) findViewById(R.id.btn_6); 
    btn6.setOnClickListener(new View.OnClickListener() {@ 
     Override 
     public void onClick(View v) { 
     Intent intent_6 = new Intent(MainActivity.this, MainActivity_6.class); 
     startActivity(intent_6); 
     } 
    }); 

    btn7 = (Button) findViewById(R.id.btn_7); 
    btn7.setOnClickListener(new View.OnClickListener() {@ 
     Override 
     public void onClick(View v) { 
     Intent intent_7 = new Intent(MainActivity.this, MainActivity_7.class); 
     startActivity(intent_7); 
     } 
    }); 
    } 
} 

Когда я нажимаю кнопки, приложение падает, но на удивление НЕ всегда. Кроме того, в одной из попыток он падает при нажатии btn_6, а затем в следующей попытке (когда я снова открываю приложение), он сработает при нажатии другой кнопки, скажем теперь кнопку 5!

Теперь, если я закрою приложение и повторю попытку, это может привести к сбою при нажатии btn_3, в то время как в предыдущей попытке это было бы неплохо.

Любые идеи? Благодарю.

Вот самая последняя LogCat:

05-25 23:43:17.139 17042-17042 <XX> W/ <YY>: VFY: unable to resolve virtual method 134: Landroid/app/Activity;.onEnterAnimationComplete()V 
05-25 23:43:17.139 17042-17042 <XX> D/ <YY>: VFY: replacing opcode 0x6f at 0x140b 
05-25 23:43:17.179 17042-17042 <XX> D/ <YY>: GC_FOR_ALLOC freed 345K, 3% free 54952K/56516K, paused 15ms, total 16ms 
05-25 23:43:17.179 17042-17042 <XX> I/ <YY>-heap: Forcing collection of SoftReferences for 11040016-byte allocation 
05-25 23:43:17.199 17042-17042 <XX> D/ <YY>: GC_BEFORE_OOM freed 3K, 3% free 54948K/56516K, paused 22ms, total 22ms 
05-25 23:43:17.199 17042-17042 <XX> E/ <YY>-heap: Out of memory on a 11040016-byte allocation. 
05-25 23:43:17.199 17042-17042 <XX> I/ <YY>: "main" prio=5 tid=1 RUNNABLE 
05-25 23:43:17.199 17042-17042 <XX> I/ <YY>: | group="main" sCount=0 dsCount=0 obj=0x41e4f578 self=0x41e3a4e8 
05-25 23:43:17.199 17042-17042 <XX> I/ <YY>: | sysTid=17042 nice=-16 sched=0/0 cgrp=apps handle=1074368508 
05-25 23:43:17.199 17042-17042 <XX> I/ <YY>: | state=R schedstat=(3391699451 331158977 2372) utm=269 stm=70 core=0 
05-25 23:43:17.199 17042-17042 <XX> I/ <YY>:  at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
05-25 23:43:17.199 17042-17042 <XX> I/ <YY>:  at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596) 
05-25 23:43:17.199 17042-17042 <XX> I/ <YY>:  at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) 
05-25 23:43:17.199 17042-17042 <XX> I/ <YY>:  at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:832) 
05-25 23:43:17.199 17042-17042 <XX> I/ <YY>:  at android.content.res.Resources.loadDrawable(Resources.java:2988) 
05-25 23:43:17.199 17042-17042 <XX> I/ <YY>:  at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 
05-25 23:43:17.199 17042-17042 <XX> I/ <YY>:  at android.view.View.<init>(View.java:3563) 
05-25 23:43:17.199 17042-17042 <XX> I/ <YY>:  at android.widget.TextView.<init>(TextView.java:881) 
05-25 23:43:17.199 17042-17042 <XX> I/ <YY>:  at android.widget.Button.<init>(Button.java:108) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:62) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:58) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:105) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:972) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:1030) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:690) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.view.LayoutInflater.rInflate(LayoutInflater.java:761) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.view.LayoutInflater.inflate(LayoutInflater.java:498) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.view.LayoutInflater.inflate(LayoutInflater.java:398) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.view.LayoutInflater.inflate(LayoutInflater.java:354) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:136) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at abcpqr.red.MainActivity_1.onCreate(MainActivity_1.java:21) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.app.Activity.performCreate(Activity.java:5372) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.app.ActivityThread.access$700(ActivityThread.java:159) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.os.Handler.dispatchMessage(Handler.java:99) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.os.Looper.loop(Looper.java:176) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at android.app.ActivityThread.main(ActivityThread.java:5419) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at java.lang.reflect.Method.invokeNative(Native Method) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at java.lang.reflect.Method.invoke(Method.java:525) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 
05-25 23:43:17.204 17042-17042 <XX> I/ <YY>:  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 
05-25 23:43:17.209 17042-17042 <XX> I/ <YY>:  at dalvik.system.NativeStart.main(Native Method) 
05-25 23:43:17.209 17042-17042 <XX> D/skia: --- decoder->decode returned false 
05-25 23:43:17.209 17042-17042 <XX> D/AndroidRuntime: Shutting down VM 
05-25 23:43:17.209 17042-17042 <XX> W/ <YY>: threadid=1: thread exiting with uncaught exception (group=0x41e4e700) 
05-25 23:43:17.209 17042-17042 <XX> E/AndroidRuntime: FATAL EXCEPTION: main 
                          java.lang.OutOfMemoryError 
                           at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) 
                           at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:596) 
                           at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:444) 
                           at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:832) 
                           at android.content.res.Resources.loadDrawable(Resources.java:2988) 
                           at android.content.res.TypedArray.getDrawable(TypedArray.java:602) 
                           at android.view.View.<init>(View.java:3563) 
                           at android.widget.TextView.<init>(TextView.java:881) 
                           at android.widget.Button.<init>(Button.java:108) 
                           at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:62) 
                           at android.support.v7.widget.AppCompatButton.<init>(AppCompatButton.java:58) 
                           at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:105) 
                           at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:972) 
                           at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:1030) 
                           at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44) 
                           at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:690) 
                           at android.view.LayoutInflater.rInflate(LayoutInflater.java:761) 
                           at android.view.LayoutInflater.inflate(LayoutInflater.java:498) 
                           at android.view.LayoutInflater.inflate(LayoutInflater.java:398) 
                           at android.view.LayoutInflater.inflate(LayoutInflater.java:354) 
                           at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276) 
                           at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:136) 
                           at abcpqr.red.MainActivity_1.onCreate(MainActivity_1.java:21) 
                           at android.app.Activity.performCreate(Activity.java:5372) 
                           at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1104) 
                           at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2257) 
                           at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2349) 
                           at android.app.ActivityThread.access$700(ActivityThread.java:159) 
                           t android.app.ActivityThread$H.handleMessage(ActivityThread.java:1316) 
                           at android.os.Handler.dispatchMessage(Handler.java:99) 
                           at android.os.Looper.loop(Looper.java:176) 
                           at android.app.ActivityThread.main(ActivityThread.java:5419) 
                           at java.lang.reflect.Method.invokeNative(Native Method) 
                           at java.lang.reflect.Method.invoke(Method.java:525) 
                           at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 
                           at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 
                           at dalvik.system.NativeStart.main(Native Method) 
05-25 23:43:25.074 17042-17042 <XX> I/Process: Sending signal. PID: 17042 SIG: 9 

вот суть моего XML:

<?xml version="1.0" encoding="utf-8"?> 
 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 
    xmlns:tools="http://schemas.android.com/tools" 
 
    xmlns:ads="http://schemas.android.com/apk/res-auto" 
 
    android:layout_width="match_parent" 
 
    android:layout_height="match_parent" 
 
    android:paddingBottom="@dimen/activity_vertical_margin" 
 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
 
    android:paddingRight="@dimen/activity_horizontal_margin" 
 
    android:paddingTop="@dimen/activity_vertical_margin" 
 
    tools:context="xxx.MainActivity"> 
 

 
    <Button 
 
     android:layout_width="103dp" 
 
     android:layout_height="82dp" 
 
     android:id="@+id/btn_inside" 
 
     android:layout_below="@+id/LL_subheading1" 
 
     android:layout_centerHorizontal="true" 
 
     android:background="@mipmap/pic_small_inside" 
 
     style="@style/Widget.AppCompat.Button.Borderless" 
 
     android:clickable="true"/> 
 

 
    <Button 
 
     android:layout_width="103dp" 
 
     android:layout_height="82dp" 
 
     android:id="@+id/btn_on_the_side1" 
 
     android:layout_below="@+id/LL_subheading2" 
 
     android:layout_alignParentLeft="true" 
 
     android:layout_alignParentStart="true" 
 
     android:background="@mipmap/pic_small_on_the_side1" 
 
     style="@style/Base.Widget.AppCompat.Button.Borderless" 
 
     android:clickable="true"/> 
 

 
    <Button 
 
     android:layout_width="103dp" 
 
     android:layout_height="82dp" 
 
     android:id="@+id/btn_on_the_side3" 
 
     android:layout_below="@+id/LL_subheading2" 
 
     android:layout_alignParentRight="true" 
 
     android:layout_alignParentEnd="true" 
 
     android:background="@mipmap/pic_small_on_the_side3" 
 
     style="@style/Base.Widget.AppCompat.Button.Borderless" 
 
     android:clickable="true"/> 
 

 
    <Button 
 
     android:layout_width="103dp" 
 
     android:layout_height="82dp" 
 
     android:id="@+id/btn_on_the_side2" 
 
     android:layout_alignTop="@+id/btn_on_the_side1" 
 
     android:layout_centerHorizontal="true" 
 
     android:background="@mipmap/pic_small_on_the_side2" 
 
     style="@style/Base.Widget.AppCompat.Button.Borderless" 
 
     android:clickable="true"/> 
 

 
    
 
    <Button 
 
     android:layout_width="103dp" 
 
     android:layout_height="82dp" 
 
     android:id="@+id/btn_outside1" 
 
     android:layout_below="@+id/LL_subheading3" 
 
     android:layout_alignParentLeft="true" 
 
     android:layout_alignParentStart="true" 
 
     android:background="@mipmap/pic_small_outside1" 
 
     style="@style/Base.Widget.AppCompat.Button.Borderless" 
 
     android:clickable="true"/> 
 

 
    <Button 
 
     android:layout_width="103dp" 
 
     android:layout_height="82dp" 
 
     android:id="@+id/btn_outside2" 
 
     android:layout_below="@+id/LL_subheading3" 
 
     android:layout_centerHorizontal="true" 
 
     android:background="@mipmap/pic_small_outside2" 
 
     style="@style/Base.Widget.AppCompat.Button.Borderless" 
 
     android:clickable="true"/> 
 

 
    <Button 
 
     android:layout_width="103dp" 
 
     android:layout_height="82dp" 
 
     android:id="@+id/btn_outside3" 
 
     android:layout_below="@+id/LL_subheading3" 
 
     android:layout_alignParentRight="true" 
 
     android:layout_alignParentEnd="true" 
 
     android:background="@mipmap/pic_small_outside3" 
 
     style="@style/Base.Widget.AppCompat.Button.Borderless" 
 
     android:clickable="true"/> 
 

 
</RelativeLayout>

+0

пожалуйста, напишите сообщения об ошибках – somia

+0

Покажите нам в журнал трассировки, когда приложение врезаться –

+0

в приложение рушится на моем телефоне ... со стандартным сообщением: к сожалению, прекратил работать (по каким-то глупым причинам эмулятор не работает) –

ответ

0

Пожалуйста, используйте приведенный ниже код и проверить

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

    private Button btn1, btn2, btn3, btn4, btn5, btn6, btn7; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btn1 = (Button) findViewById(R.id.btn_1); 
     btn2 = (Button) findViewById(R.id.btn_2); 
     btn3 = (Button) findViewById(R.id.btn_3); 
     btn4 = (Button) findViewById(R.id.btn_4); 
     btn5 = (Button) findViewById(R.id.btn_5); 
     btn6 = (Button) findViewById(R.id.btn_6); 
     btn7 = (Button) findViewById(R.id.btn_7); 
     btn1.setOnClickListener(this); 
     btn2.setOnClickListener(this); 
     btn3.setOnClickListener(this); 
     btn4.setOnClickListener(this); 
     btn5.setOnClickListener(this); 
     btn6.setOnClickListener(this); 
     btn7.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     switch(v.getId()) { 
      case R.id.btn_1: 
       Intent intent_1 = new Intent(MainActivity.this, MainActivity_1.class); 
       startActivity(intent_1); 
       break; 
      case R.id.btn_2: 
       Intent intent_2 = new Intent(MainActivity.this, MainActivity_2.class); 
       startActivity(intent_2); 
       break; 
      ... 

      case R.id.btn_7: 
       Intent intent_7 = new Intent(MainActivity.this, MainActivity_7.class); 
       startActivity(intent_7); 
       break; 
     } 
    } 
} 
+0

Большое спасибо @somia - за ваше время и усилия. Я попытался изменить свой код в соответствии с вашим редактированием, но НЕВОЗМОЖНО, он сбой, с тем же шаблоном. –

+0

Пожалуйста, подключите свой телефон к компьютеру и запустите приложение (убедитесь, что разрешили отладку usb), и посмотрите, что это сообщение об ошибке в logcat – somia

+0

Aah !, по какой-то причине ни эмулятор не работает на моем компьютере, ни я не могу использовать мой телефон через USB-кабель в режиме отладки; Я тестирую свое приложение очень сложно ... –

0

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

Кнопки дизайна (XML) должны иметь атрибут OnClick, как:

<Button android:id="@+id/button" 
    android:onClick="onClickButton" 
    android:text="Awesome" /> 

Тогда создайте метод для каждой кнопки:

public void onClickButton(View v){ 
    // Code to run after button click 
} 

Этот метод должен возвращать пустоту и иметь в качестве аргумента представление.

Чтобы помочь вам с вашей ошибкой, мне нужен логарифм, который появляется на мониторе Android. Вам просто нужно подключить свой телефон к компьютеру и запустить приложение из вашей среды разработки.

+0

Gandarez - спасибо; –

+0

... но это не сработает :( –

+0

По крайней мере, теперь лучше и легче обнаружить ошибку. Чтобы помочь вам, разместите остальную часть кода (действия, которые вызывают), укажите лучше, например: Начало MainActivity -> OnClickActivity1 -> левый приложение -> открыл приложение на Activity1 -> оттеснены -> OnClickActivity2 -..> аварии Или просто позаимствовать код, и я могу отладить –

0

Вы используете большие изображения, и на устройстве заканчивается память. Проверьте размер изображений. И поделитесь своим Xml Layout пожалуйста

+0

Я добавил сущность xml –

0

Вы получаете OutOfMemoryException.Смотрите ваши

logcatjava.lang.OutOfMemoryError в android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)

Проблема вы создаете новые виды деятельности на ваших клик деятельности кнопки тяжелы и загрузке растровых изображений в этих мероприятиях из папки активов. Новые экземпляры активности с тяжелыми растровыми изображениями в ней вызывают ошибку.

заменить действия фрагментом и использовать Glide или Picasso для загрузки изображений.

Примечание: С этого момента, если сбой приложений попытается найти «Fatal» в вашем logcat, этот журнал будет содержать объяснение ошибки.

0

Ошибки, котор вы получаете являются может быть связано с

1.Use из размеров изображений тяжелых

2.you всегда должен закончить свою предыдущую деятельность, чтобы освободить часть памяти после перехода от одного вида деятельности на другой ,

3.Whenever вы начинаете использовать большее количество изображений в вашем приложении вы должны установить android:largeHeap="true" в файле манифеста Android для приложения

 Смежные вопросы

  • Нет связанных вопросов^_^