Простая программа Onclick, выдающая логическую ошибку («Невозможно открыть файл трассировки стека» /data/anr/traces.txt: «Отказано в доступе») - PullRequest
0 голосов
/ 08 декабря 2011

Я получаю сообщение об ошибке «Невозможно открыть файл трассировки стека» /data/anr/traces.txt «: Отказано в доступе», что, как я знаю, связано с ошибкой в ​​логике; проблема в том, что мои xml-файлы являются spic и span, поэтому я предполагаю, что это должно быть по классу активности.

У меня есть основной макет (main.xml), в котором есть кнопки: «Пуск» и «Инструкции». При нажатии на кнопку с инструкциями она должна перейти к макету: инструкция.xml, а при нажатии на кнопку запуска она должна перейти к макету: test_layout.xml.

За любое понимание того, что я когда-либо был бы самым благодарным и излил бы миллионы репутации на вас. Благодарю.

- Проблема в том, что я реализую OnClickListener?

-Что-то делать, если не помещать @Override поверх второго метода ('public void onClick')? потому что там написано, что я могу разместить его только при перезаписи суперкласса. **

Пожалуйста, это очень короткий код, я был бы признателен, если бы вы могли быстро взглянуть и сказать мне, что вы думаете. Я разместил манифест ниже кода.

package it.will.work;

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



public class ActualWorkingQuizActivity extends Activity implements OnClickListener{


 Button start = (Button) findViewById(it.will.work.R.id.start_main);
 Button instructions = (Button) findViewById(it.will.work.R.id.instructions_main);


    /* Called when the activity is first created. */
       @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);


     //sets the Click Listeners
    start.setOnClickListener(this);
    instructions.setOnClickListener(this); 

}

public void onClick(View v) {
     if (v==start) {
         setContentView(it.will.work.R.layout.test_layout);
     }
     else if (v==instructions) {
         setContentView(it.will.work.R.layout.instructions);
}
     }
     }

Вот мой манифест.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="it.will.work"
   android:versionCode="1"
   android:versionName="1.0" >

   <uses-sdk android:minSdkVersion="7" />

   <application
       android:icon="@drawable/starwarsicon"
       android:label="@string/appname" >
       <activity
           android:label="@string/appname"
           android:name=".ActualWorkingQuizActivity" >
           <intent-filter >
               <action android:name="android.intent.action.MAIN" />
               <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
       </activity>
   </application>

1 Ответ

2 голосов
/ 08 декабря 2011

Инициализируйте ваши кнопки в onCreate ().

start = (Button) findViewById(R.id.start_main);
instructions = (Button) findViewById(R.id.instructions_main);

В методе onClick () внесите следующие изменения

public void onClick(View v)
{
    if (v.getId() == R.id.start_main)
    {
      setContentView(R.layout.test_layout);
    } else if (v.getId() == R.id.instructions_main)
    {
      setContentView(R.layout.instructions);
    }
}

или альтернативный

public void onClick(View v)
{
    if (v.equals(start))
    {
      setContentView(R.layout.test_layout);
    } else if (v.equals(instructions))
    {
      setContentView(R.layout.instructions);
    }
}
...