2015-06-21 2 views
0

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

public class MainActivity extends Activity { 
    Draw draw; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     LinearLayout l = new LinearLayout(this); 
     l.setOrientation(LinearLayout.VERTICAL); 
     setContentView(l); 
     l.addView(new Draw(this)); 
     setContentView(R.layout.activity_main); 

     draw = new Draw(this); 
     draw.setBackgroundColor(Color.BLUE); 
     setContentView(draw); 

     setUpBlockBtn(); 
    } 

    private void setUpBlockBtn(){ 
     Button addBlockButton = (Button)findViewById(R.id.btnBlock); 

     addBlockButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Log.i("DemoButtonApp", "you clicked the button"); 
       //finish(); 
      } 
     }); 
    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     return true; 
    } 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     int id = item.getItemId(); 

     if (id == R.id.action_settings) { 
      return true; 
     } 
     return super.onOptionsItemSelected(item); 
    } 


} 
+0

положить выход LogCat здесь, чтобы узнать об ошибке ?. Но может случиться так, потому что вы используете setContentView (l); два раза. –

+0

Возможный дубликат [как добавить кнопку динамически в android?] (Http://stackoverflow.com/questions/1851633/how-to-add-button-dynamically-in-android) –

ответ

0

Вы используете setContentView 3 раза, почему ?? если вы определили кнопку в activity_main.xml, то используйте ее как contentview. в вашей программе, когда вы вызываете setUpBlockBtn() для доступа к объекту Button, вы должны установить правильное содержание, в этом случае оно должно быть activity_main.xml. снова на линии setContentView (draw); вы меняете его, что не может создать кнопку findViewById (R.id.btnBlock);, так что приложение сбой. короче заданной правильной contentView

+0

Хорошо спасибо, как мне это сделать хотя, я действительно не понимаю, что он делает и как это работает? – Phill

+0

Определите кнопку в Activity_main.xml с идентификатором btnBlock. и '@Override protected void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); Кнопка addBlockButton = (кнопка) findViewById (R.id.btnBlock); addBlockButton.setOnClickListener (новый View.OnClickListener() { @Override общественного недействительными OnClick (View v) { \t Toast.makeText (getApplicationContext(), "Кнопка Нажал", Toast.LENGTH_SHORT) .show();} }); } ' google it для основных уроков :) – ThatsME

0

У вас есть два варианта:

1 Создание файла макета XML с кнопкой в ​​нем:

создать новый файл макета как activity_main в каталоге Рез/макет

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

    <Button 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Action!" 
    /> 

</LinearLayout> 

и использовать этот макет в своей деятельности:

public class MainActivity extends Activity { 

    Button button; 

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

     button = (Button) findViewById(R.id.button); 
     setUpButton(); 
    } 

    private void setUpButton() { 
     // Do something with your button 
    } 
} 

2- кнопку Добавление динамически к вашей деятельности:

общественный класс MainActivity расширяет активность {

Button button; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     // setContentView(R.layout.activity_main); 
     // button = (Button) findViewById(R.id.button); 

     button = new Button(this); 
     // set button's properties 

     setContentView(button); 
     setUpButton(); 
    } 

    private void setUpButton() { 
     // Do something with your button 
    } 
}