2012-02-22 13 views
0

私は初心者のプログラマティックなUIを書いていますが、何度も慎重にやり直してきましたが、このコードを壊している部分は何も表示されません。最初にUI。私はビューで何か間違ったことをしなければならないが、私は何を言うことができない。誰でも助けることができますか?起動時に致命的な例外が発生する

これは私の主な活動コード(すべての今、そこにある)

package com.orbitbreak.musicbox; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.ViewGroup; 
import android.widget.ImageView; 

import com.orbitbreak.musicbox.R; 

public class MusicBoxActivity extends Activity { 

    public ViewGroup viewUpdate; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     // makes one image layout 
     ImageView singleButton = new ImageView(this); 
     singleButton.setImageResource(R.drawable.gridbuttonoff); 
     singleButton.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
     viewUpdate.addView(singleButton); 

     redrawView(getViewUpdate()); 

    } 

    public void redrawView(ViewGroup param){ 
     setViewUpdate(param); 
     setContentView(getViewUpdate()); 
    } 
    public ViewGroup getViewUpdate(){ 
     return this.viewUpdate; 
    } 
    public void setViewUpdate(ViewGroup param){ 
     this.viewUpdate = param; 
    } 

} 

であり、ここで私のlogcatのログが

02-22 16:53:56.440: D/AndroidRuntime(625): Shutting down VM 
02-22 16:53:56.440: W/dalvikvm(625): threadid=1: thread exiting with uncaught exception  (group=0x40015560) 
02-22 16:53:56.460: E/AndroidRuntime(625): FATAL EXCEPTION: main 
02-22 16:53:56.460: E/AndroidRuntime(625): java.lang.RuntimeException: Unable to start  activity ComponentInfo{com.orbitbreak.musicbox/com.orbitbreak.musicbox.MusicBoxActivity}:  java.lang.NullPointerException 
02-22 16:53:56.460: E/AndroidRuntime(625): at  android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647) 
02-22 16:53:56.460: E/AndroidRuntime(625): at  android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) 
02-22 16:53:56.460: E/AndroidRuntime(625): at  android.app.ActivityThread.access$1500(ActivityThread.java:117) 
02-22 16:53:56.460: E/AndroidRuntime(625): at  android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
02-22 16:53:56.460: E/AndroidRuntime(625): at  android.os.Handler.dispatchMessage(Handler.java:99) 
02-22 16:53:56.460: E/AndroidRuntime(625): at android.os.Looper.loop(Looper.java:123) 
02-22 16:53:56.460: E/AndroidRuntime(625): at  android.app.ActivityThread.main(ActivityThread.java:3683) 
02-22 16:53:56.460: E/AndroidRuntime(625): at  java.lang.reflect.Method.invokeNative(Native Method) 
02-22 16:53:56.460: E/AndroidRuntime(625): at  java.lang.reflect.Method.invoke(Method.java:507) 
02-22 16:53:56.460: E/AndroidRuntime(625): at  com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
02-22 16:53:56.460: E/AndroidRuntime(625): at  com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
02-22 16:53:56.460: E/AndroidRuntime(625): at dalvik.system.NativeStart.main(Native Method) 
02-22 16:53:56.460: E/AndroidRuntime(625): Caused by: java.lang.NullPointerException 
02-22 16:53:56.460: E/AndroidRuntime(625): at  com.orbitbreak.musicbox.MusicBoxActivity.onCreate(MusicBoxActivity.java:25) 
02-22 16:53:56.460: E/AndroidRuntime(625): at  android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
02-22 16:53:56.460: E/AndroidRuntime(625): at  android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) 
02-22 16:53:56.460: E/AndroidRuntime(625): ... 11 more 

答えて

2

viewUpdateだが、あなたがそれを膨らませる予定でしたか、nullであります見る?それはあなたの根本的な考えであるはずですか?

xmlからUIを読み込むことを検討する必要があります。それは非常に便利で、Androidの推奨方法です。

EDIT

私は、これはあなたが望むものを正確であると信じて:GridView example

+0

うん、それはルートビューことになっています。どのようにViewGroupをインスタンス化すればよいのですか?.addView(View v)を使うことができます。 私はXMLを使い始めましたが、このプロジェクトではクリック可能なイメージの16x16グリッドを反復処理していますので、ImageViewをImageView [] []要素としてインスタンス化して処理するほうがずっと簡単だと思いました各XML要素に固有のIDを持つのとは対照的です。 与えられた高さ/幅のグリッドをxml要素としてプログラムで生成する方法について助言しています。ここでは、各要素をonClickListenersの変数で参照することができますか? –

+0

xmlを使用する場合、手動でビューを追加する必要はありません。それを試してみてください。 R.layout.mainファイルのxmlにレイアウトを指定しています。ビューグループに子ビューをネストすることができます。代わりに、プログラムでそれらを配置することを主張する場合は、R.layout.mainファイルのルートビューにidを入れてから、そのIDでアクティビティに対してfindViewByIdを実行してください。それはあなたが親として使用できるビューを提供します。繰り返しますが、これはお勧めしません。 –

+0

ImageView [] []の配列要素を宣言することによって、別のイメージでグリッドを再描画する必要があります。 findViewByIdは整数をとりますが、ループインデックスを対応するイメージビューxml IDに変換して高速検索する方法はありません。 views/setContentViewをよりプログラム的にインスタンス化して操作する方法の例を教えてください。上記の私の懸念に対するXMLソリューション –

関連する問題