Кнопки для открытия новой активности? - PullRequest
1 голос
/ 04 сентября 2011

Итак, у меня есть три вида деятельности / экраны.На первом экране есть кнопка, которая при нажатии открывает второй экран.На втором экране есть кнопка для открытия экрана 3, а также еще одна кнопка для возврата на экран 1. Я не могу заставить обе кнопки на экране 2 работать.(Либо один работает, а другой нет, и наоборот).

Экран 1 Java:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

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

    Button next = (Button) findViewById(R.id.part1to2);
    next.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            Intent myIntent = new Intent(view.getContext(), Screen2.class);
            startActivityForResult(myIntent, 0);
        }

    });
   }
  }

Экран 2.java:

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Screen2 extends Activity {

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

    Button next = (Button) findViewById(R.id.goto1);
    next.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            Intent intent = new Intent();
            setResult(RESULT_OK, intent);


    Button next = (Button) findViewById(R.id.goto3);
    next.setOnClickListener(new View.OnClickListener() {
       public void onClick(View view) {
           Intent myIntent = new Intent(view.getContext(), Screen3.class);
            startActivityForResult(myIntent, 0);
            finish();
        }

      });
    }
  });
 }
}

Экран 3.java

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class Screen3 extends Activity {

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

        }

}

И мой манифест:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.gamer.network2"
  android:versionCode="1"
  android:versionName="1.0">
<uses-sdk android:minSdkVersion="7" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:name=".FirstActivity"
              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=".Screen2"></activity>
<activity android:name=".Screen3"></activity>
 </application>
 </manifest>

Итак, как мне заставить обе кнопки на экране 2 работать одновременно?

1 Ответ

2 голосов
/ 04 сентября 2011

Обе кнопки имеют одинаковое имя и объявлены неправильно.

  Button next = (Button) findViewById(R.id.goto1);
    next.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            Intent intent = new Intent();
            setResult(RESULT_OK, intent);


    Button next = (Button) findViewById(R.id.goto3);
    next.setOnClickListener(new View.OnClickListener() {
       public void onClick(View view) {
           Intent myIntent = new Intent(view.getContext(), Screen3.class);
            startActivityForResult(myIntent, 0);
            finish();
        }

      });
    }
  });

Попробуйте вместо:

    Button goto3 = (Button) findViewById(R.id.goto3);
    goto3.setOnClickListener(new View.OnClickListener() {
       public void onClick(View view) {
           // Code here 
       }    
      });

    Button goto1 = (Button) findViewById(R.id.goto1);
    goto1.setOnClickListener(new View.OnClickListener() {
       public void onClick(View view) {
            // Code here
        }    
      });

Редактировать: Коул, см. Ниже, это код, работающий из моего приложения, с двумя разными кнопками, указывающими на два разных действия. Я также включил код из AndroidManifest.xml.

    mBtnPlayCourse = (Button) findViewById(R.id.btn_screenstart_playcourse);
    mBtnNewCourse = (Button) findViewById(R.id.btn_screenstart_newcourse);

    mBtnPlayCourse.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            final Intent i = new Intent(Screen_Start.this, Screen_Players.class);               
            startActivity(i);
        }
    });

    mBtnNewCourse.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            final Intent i = new Intent(Screen_Start.this, Screen_CreateCourse.class);
            startActivity(i);
        }
    });

В AndroidManifest.xml:

    <activity android:name=".Screen_CreateCourse" android:label="@string/app_name">
    </activity>

    <activity android:name=".Screen_Players" android:label="@string/app_name">
    </activity>
...