2015-11-27 3 views
-3

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

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



     ImageButton myButton = new ImageButton(this); 
     myButton.setId(R.id.myButton); 
     myButton.setImageResource(R.drawable.settings); 
     myButton.setClickable(true); 
     AbsListView.LayoutParams layout_82 = null; 
     layout_82 = new AbsListView.LayoutParams(
       layout_82.height = AbsListView.LayoutParams.WRAP_CONTENT, 
       layout_82.width = AbsListView.LayoutParams.WRAP_CONTENT); 
     myButton.setLayoutParams(layout_82); 

     registerForContextMenu(myButton); 
    } 
+2

Сообщите свое логарифм. Держим пари, что это NPE? –

+0

Как бы я это сделал –

+0

Скопируйте ваш лог-код в свой вопрос. Выберите весь вложенный текст и нажмите 'Ctrl' +' + '(или' Option' + '+', если вы используете Mac). Вы должны поместить текст между кодом и ошибкой. I.e .: «Logcat:« ENTER »' ENTER' » –

ответ

1

Похоже, вы, вероятно, получить NullPointerException здесь:

layout_82 = new AbsListView.LayoutParams(
      layout_82.height = AbsListView.LayoutParams.WRAP_CONTENT, 
      layout_82.width = AbsListView.LayoutParams.WRAP_CONTENT); 

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

layout_82 = new AbsListView.LayoutParams(
      AbsListView.LayoutParams.WRAP_CONTENT, 
      AbsListView.LayoutParams.WRAP_CONTENT); 
Смежные вопросы