2014-02-13 177 views
0

我有一個2 spinners,根據那裏組合,按鈕上點擊打開一個新的xml,其中一個圖像將顯示基於來自spinners的組合。更改圖像在按鈕點擊一個xml頁面。android

基本上iam面臨2個問題。

  1. 按鈕onClickListner()不工作,以及我評論的功能和向前邁進

  2. 的image.setImageResource()不工作logcat的說,他是無法啓動的活動。

那我到底做錯了什麼?

這是主要的活動代碼..一切之前嘗試的作品完美..但的onclick聽者()崩潰的代碼..但在徵求意見PRG工程..

try 
    { 
     /*btn=(Button)this.findViewById(R.id.button); 
     System.out.println(btn); 
     btn.setOnClickListener(new OnClickListener() {    

      public void onClick(View v) {*/ 

       if(subtxt.equals("Maths")) 
       { 
        if(Integer.parseInt(yeartxt)==1990) 
        { 
         Intent ip = new Intent(MainActivity.this, maths.class); 
         startActivity(ip); 
        } 
. 
//the prg executes until start activity perfectly and continues onto maths.class 
. 

. 

這是在代碼maths.java

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
ImageView image; 
image = (ImageView) findViewById(R.id.imageView1); 
image.setImageResource(R.drawable.heart_maths); 
setContentView(R.layout.physics); 
    } 

所有的活動都在Android的mainfest指定.. 這是日誌貓

02-13 00:29:20.908: E/AndroidRuntime(1485): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
02-13 00:29:20.908: E/AndroidRuntime(1485): at android.app.ActivityThread.access$800(ActivityThread.java:135) 
02-13 00:29:20.908: E/AndroidRuntime(1485): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
02-13 00:29:20.908: E/AndroidRuntime(1485): at android.os.Handler.dispatchMessage(Handler.java:102) 
02-13 00:29:20.908: E/AndroidRuntime(1485): at android.os.Looper.loop(Looper.java:136) 
02-13 00:29:20.908: E/AndroidRuntime(1485): at android.app.ActivityThread.main(ActivityThread.java:5017) 
02-13 00:29:20.908: E/AndroidRuntime(1485): at java.lang.reflect.Method.invokeNative(Native Method) 
02-13 00:29:20.908: E/AndroidRuntime(1485): at java.lang.reflect.Method.invoke(Method.java:515) 
02-13 00:29:20.908: E/AndroidRuntime(1485): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
02-13 00:29:20.908: E/AndroidRuntime(1485): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
02-13 00:29:20.908: E/AndroidRuntime(1485): at dalvik.system.NativeStart.main(Native Method) 
02-13 00:29:20.908: E/AndroidRuntime(1485): Caused by: java.lang.NullPointerException 
02-13 00:29:20.908: E/AndroidRuntime(1485): at com.example.subjects.maths.onCreate(maths.java:16) 
02-13 00:29:20.908: E/AndroidRuntime(1485): at android.app.Activity.performCreate(Activity.java:5231) 
02-13 00:29:20.908: E/AndroidRuntime(1485): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
02-13 00:29:20.908: E/AndroidRuntime(1485): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
02-13 00:29:20.908: E/AndroidRuntime(1485): ... 11 more 

那麼究竟是在這裏面臨的2個錯誤的原因。 ??

編輯ANSWER

1) the on clicklistner() error can be avoided by declaring all variables globally in mainactivity.java 
2) the image.setImageResource() should be given after setcontentview.. 

這是所有有。

+0

這是你在com.example.subjects.maths.onCreate方法16行? –

+0

(用於onClick)是否將'maths'活動添加到清單文件中? –

回答

2

你去錯在這裏:第一setContentView(R.layout.physics)並得到後imageoncreate()方法:

您應該格式如下圖所示:

image = (ImageView) findViewById(R.id.imageView1); 
image.setImageResource(R.drawable.heart_maths); 
setContentView(R.layout.physics); 

setContentView(R.layout.physics); 
image = (ImageView) findViewById(R.id.imageView1); 
image.setImageResource(R.drawable.heart_maths); 
+0

謝謝...解決了這個問題... :)但是什麼abt onclicklistner?什麼是它的問題.. – Alvin

+0

@Alvin是否將數學活動添加到您的manifest.xml中? –

+0

請再次修改q .. – Alvin

0

替換爲此,您需要先設置視圖然後使用資源。將行setContentView(R.layout.physics);移至頂部。

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
setContentView(R.layout.physics); 
ImageView image; 
image = (ImageView) findViewById(R.id.imageView1); 
image.setImageResource(R.drawable.heart_maths); 

    } 
+0

謝謝...解決了問題... :)但什麼abt onclicklistner?最新問題.. – Alvin

+0

嘗試使用onclicklistner代碼運行應用程序。你會得到什麼錯誤? – JoelFernandes

+0

添加代碼請再次輸入chk q – Alvin

0

改變此密碼

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
ImageView image; 
image = (ImageView) findViewById(R.id.imageView1); 
image.setImageResource(R.drawable.heart_maths); 
setContentView(R.layout.physics); 
} 

protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.physics); 
ImageView image; 
image = (ImageView) findViewById(R.id.imageView1); 
image.setImageResource(R.drawable.heart_maths); 

}