2013-12-20 75 views
0

的Android/JAVA /日食 - 我有這樣的Java文件:(Eight.java)按鈕不起作用的Java的Android

/** 
* 
*/ 
package com.apptemplate; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

import com.google.android.gms.ads.AdRequest; 
import com.google.android.gms.ads.AdView; 
import com.hoerhager.christmas.R; 

/** 
    * 
*/ 
public class Eight extends Activity { 

    private AdView adView; 
    private Button btn81; 
    private Intent intent; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.one); 
     adView = (AdView)this.findViewById(R.id.adView); 
     AdRequest adRequest = new AdRequest.Builder().build(); 
     adView.loadAd(adRequest); 
    } 



    private void initialiseUI() 
    { 
     btn81 = (Button)findViewById(R.id.button81); 
     btn81.setOnClickListener((OnClickListener) this); 
    } 
    @Override 
     public void onPause() { 
     adView.pause(); 
     super.onPause(); 
     } 

     @Override 
     public void onResume() { 
     super.onResume(); 
     adView.resume(); 
     } 

     @Override 
     public void onDestroy() { 
     adView.destroy(); 
     super.onDestroy(); 
     } 

     public void onClick(View v) 
     { 
      if(v==btn81) 
      { 
       intent = new Intent(this,Eighta.class); 
      } 

      startActivity(intent); 
     } 

} 

和這個XML文件:(eight.xml)

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



    <ImageView 
     android:id="@+id/imageView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:src="@drawable/eight" /> 

    <com.google.android.gms.ads.AdView 
     android:id="@+id/adView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     ads:adSize="SMART_BANNER" 
     ads:adUnitId="@string/ads_unit_id" /> 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_weight="2.41" 
     android:text="@string/text8" /> 

    <Button 
     android:id="@+id/button81" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="5dp" 
     android:text="Preparation" /> 

</LinearLayout> 

的button81不起作用,錯誤是什麼?我是與Java合作的新手。其用於測試的小機器人項目

+0

你沒有初始化你的按鈕,是嗎? –

+0

你會得到一個例外嗎?如果是這樣,請提供logcat –

回答

0

你忘了給你打電話initialiseUI功能onCreate

protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.one); 
     adView = (AdView)this.findViewById(R.id.adView); 
     AdRequest adRequest = new AdRequest.Builder().build(); 
     adView.loadAd(adRequest); 
     initialiseUI(); 
    } 
0

試試這個:

/** 
* 
*/ 
package com.apptemplate; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

import com.google.android.gms.ads.AdRequest; 
import com.google.android.gms.ads.AdView; 
import com.hoerhager.christmas.R; 

/** 
    * 
*/ 
public class Eight extends Activity implements OnClickListener{ 

    private AdView adView; 
    private Button btn81; 
    private Intent intent; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.one); 
     adView = (AdView)this.findViewById(R.id.adView); 
     AdRequest adRequest = new AdRequest.Builder().build(); 
     adView.loadAd(adRequest); 
     initialiseUI(); 
    } 



    private void initialiseUI() 
    { 
     btn81 = (Button)findViewById(R.id.button81); 
     btn81.setOnClickListener(this); 
    } 
    @Override 
     public void onPause() { 
     adView.pause(); 
     super.onPause(); 
     } 

     @Override 
     public void onResume() { 
     super.onResume(); 
     adView.resume(); 
     } 

     @Override 
     public void onDestroy() { 
     adView.destroy(); 
     super.onDestroy(); 
     } 

     public void onClick(View v) 
     { 
      if(v.getId()==R.id.button81) 
      { 
       intent = new Intent(this,Eighta.class); 
      } 

      startActivity(intent); 
     } 

} 

變化:

  • 現在實現onclickListener
  • 呼叫initialiseUI在「的onCreate」方法
  • initlialiseUI去除投地onClickListener因爲它現在實現onClickListener
  • 的onClick現在使用的ID來測試平等
0

我想你忘記了這個工具,如下嘗試:

公共類八個擴展活動工具OnClickListener {

也是你的初始化UI它沒有被調用的方法。試試這個:

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

    // call the method here 
    initialiseUI(); 

} 

最後,改變setOnClickListener這樣的:

btn81.setOnClickListener(this); 
// this "attach" your button to the Activity which 
// implements the onClickListener method. 

然後,你的OnClick方法是錯誤的,看到this answer,你有兩種方法可以做到這一點:

@Override 
public void onClick(final View v) { 
    if(v.getId() == R.id.button){ // do something } 
} 

// OR 

@Override 
public void onClick(final View v) { 
    switch(v.getId()){ 
     case R.id.button: 
       // do something 
       break; 
     case ... 
    } 
} 

希望這會有所幫助。

+0

你可以看到他已經導入爲導入android.view.View.OnClickListener; – Piyush

+0

你是對的,我錯過了!謝謝。 – Fllo

1

你錯過了叫你initialiseUI()在的onCreate()功能方法:

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.one); 
    adView = (AdView)this.findViewById(R.id.adView); 
    AdRequest adRequest = new AdRequest.Builder().build(); 
    adView.loadAd(adRequest); 
    initialiseUI(); 
} 
0

中的OnCreate將這個()

btn81 = (Button)findViewById(R.id.button81); 
     btn81.setOnClickListener((OnClickListener) this); 
0

你的天堂」 t在onCreate()中稱爲initialiseUI()並且還執行Click interface。這應該夠了吧。