4

これは私のコードです。非常に単純ですが、ボタン「button1」をクリックしても何も起こりません。私は何を間違えましたか?

public class TestTab extends Activity {

    Button button1;
        Intent i;


    @Override

    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        button1 = (Button) findViewById(R.id.btnScore);
        button1.setOnClickListener(new View.OnClickListener() {


            @Override
            public void onClick(View v) {

                Toast.makeText(getApplicationContext(), "On Click Event", 5000).show();

                //i = new Intent(TestTab.this, AndroidTab.class);
                //startActivity(i);

            }

        });
   }}

2番目 -

package com.example.picturegame2;

import android.app.TabActivity;


public class AndroidTab extends TabActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.tabzz);

        TabHost tabHost = getTabHost();

        TabSpec localspec = tabHost.newTabSpec("Local");
        localspec.setIndicator("Local", getResources().getDrawable(R.drawable.friend));
        Intent localIntent = new Intent(this, local.class);
        localspec.setContent(localIntent);

        TabSpec worldwidespec = tabHost.newTabSpec("worldwide");
        worldwidespec.setIndicator("Worldwide", getResources().getDrawable(R.drawable.worldwide));
        Intent worldwideIntent = new Intent(this, worldwide.class);
        worldwidespec.setContent(worldwideIntent);

        tabHost.addTab(worldwidespec);
        tabHost.addTab(localspec);



    }


}

三番 -

package="com.example.picturegame2"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="15" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity android:name=".local"/>
    <activity android:name=".AndroidTab"/>
    <activity android:name=".TestTab"/>
    <activity android:name=".tabzz"/>
    <activity android:name=".worldwide"/>
</application>

レイアウト -

<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" >

    <Button
        android:layout_width="250dp"
        android:layout_height="100dp"
        android:text="Start New Game"
        android:id="@+id/BtnGame"
        android:textSize="35dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        />

    <ListView 
        android:id="@+id/LsOpenGames"
        android:layout_width="250dp"
        android:layout_height="210dp"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="130dp" 

        ></ListView>

    <Button
        android:layout_width="120dp"
        android:layout_height="40dp"
        android:text="Profile"
        android:id="@+id/btnProfile"
        android:textSize="15dp"
        android:layout_marginLeft="40dp"
        android:layout_marginTop="375dp"
        />

    <Button
        android:layout_width="120dp"
        android:layout_height="40dp"
        android:text="Score"
        android:id="@+id/btnScore"
        android:textSize="15dp"
        android:layout_marginLeft="170dp"
        android:layout_marginTop="375dp"
        />

</RelativeLayout>

新しい Logcat: 11-29 12:15:39.552: D/gralloc_goldfish(613): GPU エミュレーションなしのエミュレーターが検出されました。11-29 12:15:40.062: I/Choreographer(613): 51 フレームスキップしました。アプリケーションがメイン スレッドで処理しすぎている可能性があります。11-29 12:16:08.902: I/Choreographer(613): 30 フレームスキップしました! アプリケーションがメイン スレッドで処理しすぎている可能性があります。

4

3 に答える 3

5

このように、グローバルに宣言されたIntent変数を削除する必要があります。

 Button button1;
 @Override

    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        button1 = (Button) findViewById(R.id.btnScore);
        button1.setOnClickListener(new Button.OnClickListener() {

        @Override
        public void onClick(View v) {

         Intent i = new Intent(TestTab.this, AndroidTab.class);
         startActivity(i);

            }

        });
    }

または、これを試してください。

     Button button1;
     Intent i;


@Override

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    button1 = (Button) findViewById(R.id.btnScore);
    button1.setOnClickListener(new Button.OnClickListener() {

    @Override
    public void onClick(View v) {

     i = new Intent(TestTab.this, AndroidTab.class);
     startActivity(i);

        }

    });
}

startActivity(i)グローバルに宣言された Intent 変数を参照していた可能性があります。初期化を忘れて、グローバルに宣言されたものと同じ名前「i」でIntentオブジェクトをローカルに作成しました。

上記のアイデアが役に立たなかった場合は、ユーザー Yajneshwar Mandal が提案したように、試してみる必要があります。または、ClickListener 内にログを配置して、コントロールがそれに入るかどうかを確認します。

于 2012-11-26T09:59:21.967 に答える
3
public class TestTab extends Activity {

Button button1;

@Override

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    button1 = (Button) findViewById(R.id.btnScore);
    button1.setOnClickListener(new Button.OnClickListener() {

    @Override
    public void onClick(View v) {
    // TODO Auto-generated method stub
    Intent i = new Intent(TestTab.this, AndroidTab.class);
    //i.setAction(Intent.ACTION_CALL_BUTTON);
    startActivity(i);

        }

    });
}


}
于 2012-11-26T10:00:21.643 に答える
2

2つの問題があるかもしれません

  1. 意図を2回宣言しています。最初はグローバルに、次にローカルに宣言しています。システムはグローバルなデクレレーションを参照している可能性があります。

  2. 第二に、あなたは使用しました

    button1.setOnCLickListener(new Button.OnClickListener()
    
    ...     );
    

ここで使用する必要があります、

button1.setOnClickListener(new View.OnClickListener()
于 2012-11-26T10:18:28.413 に答える