2012-01-15 12 views
0

私は別のクラスにアクセスする必要があるアンドロイド用のアプリケーションを開発していますが、なぜ動作しないのかわかりません。別のクラスの関数にはどうすればアクセスできますか?

アンドロイド2.3.3でアプリケーションを実行すると、強制的に終了します。理由はわかりません。私はその方法が正しいと思います。力の

ログ電話アンドロイド閉じる:

> app_vercode:1 
device_model:u8800 
build_version:111180 
condition:1 
processName:beta.tester 
pid:13277 
uid:10088 
tag:null 
shortMsg:java.lang.NullPointerException 
longMsg:java.lang.NullPointerException: Unable to start activity ComponentInfo{beta.tester/beta.tester.BetaTesterActivity}: java.lang.NullPointerException 
stackTrace:java.lang.RuntimeException: Unable to start activity ComponentInfo{beta.tester/beta.tester.BetaTesterActivity}: java.lang.NullPointerException 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1664) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1680) 
at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:130) 
at android.app.ActivityThread.main(ActivityThread.java:3703) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.NullPointerException 
at beta.tester.BetaTesterActivity.onCreate(BetaTesterActivity.java:23) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1628) 
... 11 more 

     Detail logs: 

EDIT:このコードはすでに正しくです。

コード:

クラスBetaTesterActivity:

package beta.tester; 

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.widget.TextView; 


    public class BetaTesterActivity extends Activity { 


public TextView text1; 
private teste cmd; 

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

     text1 = (TextView) findViewById(R.id.text1); 
     //Start the function 
     cmd = new teste(); 
     cmd.start(this); 

    } 
    } 

クラス精巣:クラスteste

package beta.tester; 

public class teste { 

//Function that I will start 
    public void start(BetaTesterActivity zav){ 

     zav.text1.setText("Hello"); 

    } 
// 
} 

答えて

3

、あなたは無用である、新しいBetaTesterActivityを作成しています。フレームワークによって作成されたインスタンスを使用する必要があります。あなたのクラスtesteはこれに変更します。

public class teste { 

    //Function that I will start 
    public void start(BetaTesterActivity zav){ 

     zav.text1.setText("Hello"); 

    } 

} 

その後、あなたのアクティビティクラスのonCreate方法では、あなたがcmdを初期化してから、次のように開始呼び出す必要があります:

cmd.start(this); 
+0

アプリが強制近い... – FredVaz

+0

@FredVaz - logcatからスタックトレースを投稿してください –

+0

私は25行目が 'cmd.start();'と仮定しています。私が提案したような変数 'cmd'を初期化するコードを修正しましたか? 'cmd = new teste()'のようなものが必要です。 –

関連する問題