0

昨日Androidの学習を始めたばかりで、学習目的で2つのビューで構成される非常にシンプルなアプリをコーディングしたいと思います。

アクティビティ/ビュー1:1ボタンとテキスト「HelloWorld」ボタンをクリックすると、テキスト「testing」しかない次のアクティビティ/ビューに移動する必要があります。

アクティビティ1のコードは次のとおりです。

package helloworld.app;


import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.MenuItem; import
android.support.v4.app.NavUtils; 
/*import AudioRecordTest;*/

public class MainActivity extends Activity {

 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
 }
 @Override
 public boolean onCreateOptionsMenu(Menu menu) {
     getMenuInflater().inflate(R.menu.activity_main, menu);
     return true;
 }

 public void startRecording() {
    setContentView(R.layout.next_page);
 }
  }

アクティビティ2のコードは次のとおりです。packagehelloworld.app;

import android.os.Bundle; 
import android.app.Activity; import
android.view.Menu; 
import android.view.MenuItem; import
android.support.v4.app.NavUtils; 
/*import AudioRecordTest;*/

public class next_page extends Activity {

 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.next_page);
 } }

アクティビティ1のxmlファイルのコードは次のとおりです。

<RelativeLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent" >

 <TextView
     android:id="@+id/textView1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_centerHorizontal="true"
     android:layout_centerVertical="true"
     android:padding="@dimen/padding_medium"
     android:text="@string/hello_world"
     tools:context=".MainActivity" />

 <Button
     android:id="@+id/button1"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:layout_alignParentTop="true"
     android:layout_alignRight="@+id/textView1"
     android:layout_marginRight="40dp"
     android:layout_marginTop="32dp"
     android:text="Start Recording"
     android:onClick="startRecording" />

</RelativeLayout>

編集:これがlogcatからの私のエラーメッセージです

08-01 07:00:49.253:I / Choreographer(1326):40フレームスキップしました!アプリケーションがメインスレッドで多くの作業を行っている可能性があります。

08-01 07:01:11.653:D / AndroidRuntime(1326):VMをシャットダウンしています

08-01 07:01:11.653:W / dalvikvm(1326):threadid = 1:キャッチされない例外でスレッドが終了します(group = 0x40a13300)

08-01 07:01:11.673:E / AndroidRuntime(1326):致命的な例外:メイン

08-01 07:01:11.673:E / AndroidRuntime(1326):java.lang.IllegalStateException:ビュークラスandroid.widgetのonClickハンドラーのアクティビティクラスhelloworld.app.MainActivityにメソッドstartRecording(View)が見つかりませんでした。 IDが「button1」のボタン

08-01 07:01:11.673:E / AndroidRuntime(1326):android.view.View $ 1.onClick(View.java:3578)

08-01 07:01:11.673:E / AndroidRuntime(1326):android.view.View.performClick(View.java:4084)

08-01 07:01:11.673:E / AndroidRuntime(1326):android.view.View $ PerformClick.run(View.java:16966)

08-01 07:01:11.673:E / AndroidRuntime(1326):android.os.Handler.handleCallback(Handler.java:615)で

08-01 07:01:11.673:E / AndroidRuntime(1326):android.os.Handler.dispatchMessage(Handler.java:92)

08-01 07:01:11.673:E / AndroidRuntime(1326):android.os.Looper.loop(Looper.java:137)で

08-01 07:01:11.673:E / AndroidRuntime(1326):android.app.ActivityThread.main(ActivityThread.java:4745)

08-01 07:01:11.673:E / AndroidRuntime(1326):java.lang.reflect.Method.invokeNative(ネイティブメソッド)で

08-01 07:01:11.673:E / AndroidRuntime(1326):java.lang.reflect.Method.invoke(Method.java:511)で

08-01 07:01:11.673:E / AndroidRuntime(1326):com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:786)

08-01 07:01:11.673:E / AndroidRuntime(1326):com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)

08-01 07:01:11.673:E / AndroidRuntime(1326):dalvik.system.NativeStart.main(ネイティブメソッド)

08-01 07:01:11.673:E / AndroidRuntime(1326):原因:java.lang.NoSuchMethodException:startRecording [class android.view.View]

08-01 07:01:11.673:E / AndroidRuntime(1326):java.lang.Class.getConstructorOrMethod(Class.java:460)で

08-01 07:01:11.673:E / AndroidRuntime(1326):java.lang.Class.getMethod(Class.java:915)で

08-01 07:01:11.673:E / AndroidRuntime(1326):android.view.View $ 1.onClick(View.java:3571)

08-01 07:01:11.673:E / AndroidRuntime(1326):...11詳細

EDIT2:間違いを見つけました!startRecording関数のビュービューを渡すことになっています。編集したコードは次のとおりです。

public void startRecording(View view) 
{
Intent intent = new Intent(this, next_page.class);  
startActivity(intent); 
}
4

6 に答える 6

3

それを機能させるには、これがあなたのstartRecording方法である必要があります:

public void startRecording(View v) {     
    // setContentView(R.layout.next_page); this will modify the current activity view
    // if you want to start a new activity:
    Intent i = new Intent(this, next_page.class);
    startActivity(i);
}

マニフェストファイルで両方のアクティビティを宣言していることを確認してください。AndroidManifest.xmlAndroidがアクティビティを「確認」して使用するには、ファイルで宣言する必要があります。

// ...
<activity android:name=".MainActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
</activity>
<activity android:name=".next_page" />
// ...

あなたはアンドロイド開発者サイトまたはいくつかのチュートリアルから読むべきです、これは基本的なものです。

于 2012-08-01T06:14:48.860 に答える
1

インテントクラスを使用して、1つのアクティビティからアクティビティに移動できます

public void startRecording(View v) {
    Intent intent = new Intent(this, NewActivity.class);
    startActivity(intent);

}

Add your Android Manifest configuration file



   <activity android:name="NewActivity"></activity>
于 2012-08-01T06:14:28.500 に答える
0

インデントを使用してアクティビティを切り替えます。サンプルコード

btnNextScreen.setOnClickListener(new View.OnClickListener() {

        public void onClick(View arg0) {
            //Starting a new Intent
            Intent nextScreen = new Intent(getApplicationContext(), SecondScreenActivity.class);

            //Sending data to another Activity
            nextScreen.putExtra("name", inputName.getText().toString());
            nextScreen.putExtra("email", inputEmail.getText().toString());

            Log.e("n", inputName.getText()+"."+ inputEmail.getText());

            startActivity(nextScreen);

        }
    });
于 2012-08-01T06:15:52.820 に答える
0

次のアクティビティをトリガーするのがボタンであると仮定すると、次のようになります。

Button butt = (Button)findViewById(R.id.button1);
butt.setOnClickListener(new View.onClickListener(
    public void onClick(View v) {
        Intent intent = new Intent(v.getContext());
        //optionally, you could provide it stuff to send to the second Activity if you wish
        startActivity(intent);
    }
));

しかし、正直なところ、これは研究を通じて自分で理解できたはずです。

于 2012-08-01T06:15:54.227 に答える
0

startRecording - 悪いコードです。書く必要があります:

startActivity(new Intent(this, next_page.class));

コードのフォーマット方法を学ぶ

于 2012-08-01T06:16:14.127 に答える
0

最初のアクティビティの onCreate メソッドで以下のように記述します

Button button1=(Button)findViewById(r.id.button1);

button1.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
            Intent intent = new Intent(this, NewActivity.class);
startActivity(intent);  
            }
        });
于 2012-08-01T06:17:06.970 に答える