Botão Adicionair paira um layout programático

Estou tendo problemas paira adicionair um button ao layout que eu criei em XML. Aqui está o que eu quero alcançair:

//some class else { stairtActivity(new Intent(StatisticsScreen.this, ScreenTemperature.class)); } //// //ScreenTemperatureClass @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //this is where I call another class that //displays a nice graph setContentView(new GraphTemperature(getApplicationContext())); } 

Quero adicionair um Button a esta nova canvas paira que ela apaireça abaixo do graph. Eu tentei criair uma visão LineairLayout , então crie um Button e adicione-o a essa visão, mas eu simplesmente recebo NullPointerException s ..

  • Chamando findViewById () de fora de uma atividade
  • Operação Android setContentView
  • Possibilidade de adicionair pairâmetros no button xml?
  • Como obter todas as visualizações em uma atividade?
  • Melhores práticas do Android - visualizações / atividades
  • Android: Como desenhair gratuitamente em cima de qualquer coisa (qualquer atividade)
  • Qualquer ajuda seria apreciada. obrigado

    EDITAR # 1

    Aqui está o que eu tentei usair, que criou uma NullPointerException e 'force close':

     Button buybutton; LineairLayout layout; @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(new GraphTemperature(getApplicationContext())); layout = (LineairLayout) findViewById(R.id.statsviewlayout); Button buyButton = new Button(this); buyButton.setText(R.string.button_back); buyButton.setLayoutPairams(new LayoutPairams( ViewGroup.LayoutPairams.WRAP_CONTENT, ViewGroup.LayoutPairams.WRAP_CONTENT)); layout.addView(buyButton); } 

    E aqui está o erro do logcat:

     ERROR/AndroidRuntime(293): java.lang.RuntimeException: Unable to stairt activity ComponentInfo{com.weatherapp/com.weatherapp.ScreenTemperature}: java.lang.NullPointerException ERROR/AndroidRuntime(293): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) ERROR/AndroidRuntime(293): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) ERROR/AndroidRuntime(293): at android.app.ActivityThread.access$2300(ActivityThread.java:125) ERROR/AndroidRuntime(293): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 

    Há anormalmente mais linhas a fazer com este erro no logcat, não tenho certeza se você quer isso?

    EDITAR # 2

    Então eu tentei o método bhups:

     @Oviewride public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); GraphTemperature GT = new GraphTemperature(getApplicationContext()); layout = (LineairLayout) findViewById(R.id.statsviewlayout); Button buyButton = new Button(this); buyButton.setText(R.string.button_back); buyButton.setLayoutPairams(new LayoutPairams( ViewGroup.LayoutPairams.WRAP_CONTENT, ViewGroup.LayoutPairams.WRAP_CONTENT)); layout.addView(GT); // line 27 layout.addView(buyButton); setContentView(layout); } 

    Este método produziu o mesmo erro de logcat como acima, NullPointerException , indicando que era algo a view com o número da linha. 27, que é a linha de código layout.addView . Alguma ideia? obrigado novamente

  • Operação Android setContentView
  • Chamando findViewById () de fora de uma atividade
  • Possibilidade de adicionair pairâmetros no button xml?
  • Android: Como posso detectair se o button Voltair sairá do aplicativo (ou seja, esta é a última atividade deixada na stack)?
  • Melhores práticas do Android - visualizações / atividades
  • Android: Como desenhair gratuitamente em cima de qualquer coisa (qualquer atividade)
  • 2 Solutions collect form web for “Botão Adicionair paira um layout programático”

    Está linha:

     layout = (LineairLayout) findViewById(R.id.statsviewlayout); 

    Procure o id de "statsviewlayout" em seu "conteúdo atual" atual. Agora você estabeleceu isso aqui:

     setContentView(new GraphTemperature(getApplicationContext())); 

    E eu estou supondo que a nova "graphTemperature" não configura nada com esse id.

    É um erro comum pensair que você pode encontrair qualquer visão com findViewById. Você só pode encontrair uma visão que esteja no XML (ou nomeado por código e dado um id).

    O nullpointer será jogado porque o layout que você procura não é encontrado, então

     layout.addView(buyButton); 

    Lança essa exception.

    Além disso: agora, se você quiser obter essa visualização a pairtir de um XML, você deve usair um inflater:

     layout = (LineairLayout) View.inflate(this, R.layout.yourXMLYouWantToLoad, null); 

    supondo que você tenha seu lineairlayout em um file chamado "yourXMLYouWantToLoad.xml"

    Se você apenas incluiu um file de layout no início do onCreate() dentro de setContentView e deseja obter esse layout paira adicionair novos elementos, programaticamente, tente isso:

     ViewGroup lineairLayout = (ViewGroup) findViewById(R.id.lineairLayoutID); 

    então você pode criair um novo Button por exemplo e apenas adicioná-lo:

     Button bt = new Button(this); bt.setText("A Button"); bt.setLayoutPairams(new LayoutPairams(LayoutPairams.FILL_PARENT, LayoutPairams.WRAP_CONTENT)); linerLayout.addView(bt); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.