2013-03-06 2 views
2

Я получаю эту ошибку в классе, который у меня установлен, я новичок в разработке android и хотел бы узнать, как отлаживать эту ошибку в eclipse. Я просмотрел много сообщений о переполнении стека по этой проблеме, но никто не помог мне решить проблему.

public class LeftRightSliderFragmentController extends BaseSliderFragmentController 
{ 
    public LeftRightSliderFragmentController() 
    { 
    super(); 
    } 
    public LeftRightSliderFragmentController(int titleRes) 
    { 

    super(R.string.left_and_right); 
    } 

В моей strings.xml

У меня есть

<?xml version="1.0" encoding="utf-8"?> 
<resources> 

<string name="app_name">SliderExample</string> 
<string name="action_settings">Settings</string> 
<string name="hello_world">Hello world!</string> 
<string name="left_and_right">Left and Right</string> 
</resources> 

В разделе BaseClass У меня есть

public class BaseSliderFragmentController extends SlidingFragmentActivity 
{ 

    private int mTitleRes; 
    protected RSSFeedFragmentController mFrag; 

    public BaseSliderFragmentController(int titleRes) 
    { 
     mTitleRes = titleRes; 
    } 

    public BaseSliderFragmentController() 
    { 
    // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
      //New Change EDIT 
      String h = "Hello" 
    setTitle(h); 

По сути, я не знаю, почему этот вопрос будет придумать, как хорошо Я не совсем уверен, где этот вопрос подходит. Мне интересно, есть ли способ отладки, чтобы добраться до строки кода, где это происходит, чтобы я мог исследовать. Я полагаю, что это связано с setTitle, возможно?

03-06 02:58:04.195: E/AndroidRuntime(4879): FATAL EXCEPTION: main 
03-06 02:58:04.195: E/AndroidRuntime(4879): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.sliderexample/com.example.sliderexample.FragmentControllers.LeftRightSliderFragmentController}: android.content.res.Resources$NotFoundException: String resource ID #0x0 
03-06 02:58:04.195: E/AndroidRuntime(4879):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2088) 
03-06 02:58:04.195: E/AndroidRuntime(4879):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2113) 
03-06 02:58:04.195: E/AndroidRuntime(4879):  at android.app.ActivityThread.access$700(ActivityThread.java:139) 
03-06 02:58:04.195: E/AndroidRuntime(4879):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1224) 

EDIT: Сделано изменение кода нового результата новой ошибка

03-06 03: 33: 05,034: Е/AndroidRuntime (6336): неустранимое: Главный 03-06 3:33 : 05.034: E/AndroidRuntime (6336): java.lang.RuntimeException: не удается запустить активность ComponentInfo {com.example.sliderexample/com.example.sliderexample.FragmentControllers.LeftRightSliderFragmentController}: android.content.res.Resources $ NotFoundException: Resource ID # 0xa

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

+0

Для отладки: набор отладки точки слева от класса, рядом с номерами строк двойным щелчком. После того, как некоторые из них запускают программу в режиме отладки и нажимают вторую желтую стрелку слева, чтобы идти по строкам через ваш код. Просто делайте это медленно и продолжайте смотреть на переменные. Если в поле переменных появляется исключение, вы знаете, где вам нужно что-то изменить. Ваш код: Возможно, вы просто отправили сообщение в код меньше или я его не получаю, но в первом поле кода вы вызываете метод «LeftRightSliderFragmentController» и нажимаете переменную int, но не используете ее внутри?!?! –

ответ

1

Ваш конструктор с аргументами никогда не вызывается. Таким образом, mTitleRes равно 0, и андроид не может найти этот ресурс. Вы не должны использовать конструкторы для передачи аргументов активности. Будет вызываться только конструктор по умолчанию. Вы должны инициализировать mTitleRes со значением по умолчанию в базовой активности или сделать абстрактную абстрактную активность, создать абстрактный метод getTitleRes() и переопределить его в LeftRightSliderFragmentController. Затем используйте setTitle (getTitleRes()). Или просто инициализируйте mTitleRes другим значением в потомках. Everithing зависит от того, как вы используете эту деятельность. Во всяком случае, LeftRightSliderFragmentController (int titleRes) не будет вызываться при создании активности.

+0

Хорошо, если бы вы сделали то, что сказали, и теперь я получаю ту же ошибку с этим вариантом, # 0xa? Я также искал эту ошибку. Я только что установил значение по умолчанию setTitle («Hello»); Так что конструкторам не нужно было запускать. –

+0

Тогда проблема, вероятно, в другом месте. Попытайтесь использовать отладку по очереди, чтобы узнать, где ошибка. –

1

Удалить ваш

<string name="left_and_right">Left and Right</string> 

Вместо этого используйте

<integer name="integer_name">integer_value</integer> 

, и если вы хотите использовать это значение строки, используйте следующее заявление для получения строки

getString(R.string.left_and_right); 
Смежные вопросы