2015-06-21 27 views
0

我想在android studio中添加一個按鈕到我的應用程序,我跟着一個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對象時,你必須設置正確的contentview,在這種情況下它應該是activity_main.xml。再次在行setContentView(draw);你正在改變它,不能實例化按鈕findViewById(R.id.btnBlock);所以你的應用程序崩潰。總之一套正確的內容查看

+0

好的,謝謝,我該如何做到這一點雖然,我真的不明白它是什麼以及它是如何工作的? – Phill

+0

在id爲btnBlock的activity_main.xml中定義按鈕。 和 '@Override protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button addBlockButton =(Button)findViewById(R.id.btnBlock); addBlockButton.setOnClickListener(新View.OnClickListener(){ @覆蓋 公共無效的onClick(視圖v){ \t Toast.makeText(getApplicationContext() 「按鈕,點擊了」,Toast.LENGTH_SHORT).show();} }); }' 谷歌它的基本教程:) – ThatsME

0

你有兩個選擇:

1-創建與按鈕佈局的XML文件中的:

在res /佈局目錄中創建一個新的佈局文件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 
    } 
}