2011-07-18 17 views
0

近いアプリの力を作り、私はこのコードで立ち往生しています:startActivityは、私はちょうどAndroidのための開発を開始しました

public class Home extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.home); 
     Button buttonFoo = (Button)findViewById(R.id.buttonFoo); 
     buttonFoo.setOnClickListener(openFoo); 
    } 

    public OnClickListener openFoo = new OnClickListener() { 
     public void onClick(View v) { 
      Intent intent = new Intent(Home.this, Foo.class); 
      startActivity(intent); 
     } 
    }; 
} 

そして、ここでの活動はFooのコードです:

public class Foo extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     //populateWithLatest(); 
    } 
} 

とエラーログ:

07-18 19:53:35.043: ERROR/AndroidRuntime(4656): FATAL EXCEPTION: main 
07-18 19:53:35.043: ERROR/AndroidRuntime(4656): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.github.progval.openquote/com.github.progval.openquote.sites.FooActivity}; have you declared this activity in your AndroidManifest.xml? 
07-18 19:53:35.043: ERROR/AndroidRuntime(4656):  at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1405) 
07-18 19:53:35.043: ERROR/AndroidRuntime(4656):  at android.app.Instrumentation.execStartActivity(Instrumentation.java:1379) 
07-18 19:53:35.043: ERROR/AndroidRuntime(4656):  at android.app.Activity.startActivityForResult(Activity.java:2827) 
07-18 19:53:35.043: ERROR/AndroidRuntime(4656):  at android.app.Activity.startActivity(Activity.java:2933) 
07-18 19:53:35.043: ERROR/AndroidRuntime(4656):  at com.github.progval.openquote.Home$1.onClick(Home.java:34) 
07-18 19:53:35.043: ERROR/AndroidRuntime(4656):  at android.view.View.performClick(View.java:2501) 
07-18 19:53:35.043: ERROR/AndroidRuntime(4656):  at android.view.View$PerformClick.run(View.java:9107) 
07-18 19:53:35.043: ERROR/AndroidRuntime(4656):  at android.os.Handler.handleCallback(Handler.java:587) 
07-18 19:53:35.043: ERROR/AndroidRuntime(4656):  at android.os.Handler.dispatchMessage(Handler.java:92) 
07-18 19:53:35.043: ERROR/AndroidRuntime(4656):  at android.os.Looper.loop(Looper.java:130) 
07-18 19:53:35.043: ERROR/AndroidRuntime(4656):  at android.app.ActivityThread.main(ActivityThread.java:3835) 
07-18 19:53:35.043: ERROR/AndroidRuntime(4656):  at java.lang.reflect.Method.invokeNative(Native Method) 
07-18 19:53:35.043: ERROR/AndroidRuntime(4656):  at java.lang.reflect.Method.invoke(Method.java:507) 
07-18 19:53:35.043: ERROR/AndroidRuntime(4656):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 
07-18 19:53:35.043: ERROR/AndroidRuntime(4656):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 
07-18 19:53:35.043: ERROR/AndroidRuntime(4656):  at dalvik.system.NativeStart.main(Native Method) 

を私はラインstartActivity(intent);コメントない限り、私はFooのBを押すと、アプリが強制が閉じますユートン。

+0

「あなたはあなたのAndroidManifest.xmlでこの活動を宣言した?」あなたは、エラーログを読みましたか? –

答えて

7
<application android:label="@string/app_name" android:icon="@drawable/icon"> 
    <activity android:name=".Home" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name=".Foo"></activity> 

をこれは私のお気に入りの一部です:

7月18日19:53:35.043:ERROR/AndroidRuntime(4656):android.content.ActivityNotFoundException:明示的なアクティビティクラスを見つけることができませんでした{com.github.progval.openquote/com.github .progval.openquote.sites.VdmActivity} ; あなたはAndroidManifest.xmlでこのアクティビティを宣言していますか?

これはここにボタンを実装するための最良の方法ですが、場合、私は知らないが、私はそれを行う方法は次のとおりです。

findViewById(R.id.buttonFoo).setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     Intent i = new Intent(v.getContext(), Foo.class); 
     startActivity(i); 
    } 
}); 
+1

持っていましたupvote - '好きな部分のみ'の場合:) – KevinDTimm

+0

実際には、それは愚かなエラーのためでした:アクティビティ名は '.sites.Foo'であるべきですが、' 'となります。 –

0

すべてのアクティビティをマニフェストファイルで宣言する必要があります。最初に確認してください。

1

マニフェストFile.Youがメインのアクティビティタグ

が<活動アンドロイド入れFooの活動there.Underに署名しなかった参照してください:名= "はFoo"> < /アクティビティ>

0

は、それは簡単だとあなたはOnClickListenerを実装したときに、あなたのコードが良くなります。つまり、メソッドonClick(View v)を追加するだけです。あなたのonClickListenerのコンテキストが 'this'を設定し、インテントのあなたのコンテキストにも設定されます。以下のコードを参照してください。通常、これは動作します。

public class Home extends Activity implements OnClickListener { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.home); 
     Button buttonFoo = (Button)findViewById(R.id.buttonFoo); 
     buttonFoo.setOnClickListener(this); 
    } 

    public void onClick(View v) { 
     Intent intent = new Intent(this, Foo.class); 
     startActivity(intent); 
    } 
} 

EDIT:あなたのマニフェストのアクティビティを宣言することで先頭のドットがあります。あなたの活動を見つけるためにこれを削除してください。マニフェストにあなたの活動を宣言するための最良の方法は、GUI(Androidのマニフェストファイルである>アプリケーション>アプリケーションノード>追加>活動>名前:!アンドロイドでのコーディングを楽しんであなたの活動

を選択 Grtz

0

あなたフー・クラスは、つまりsetContentView。 べき

public class Foo extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     Foo.setContentView(R.layout.????) 
     //populateWithLatest(); 
    } 
} 

そうでない場合

関連する問題