簡體   English   中英

為什么我的應用程序按鈕無法使用java導航到android studio中的下一頁

[英]why my app button isn't navigating to next page in android studio using java

我是應用程序開發的新手,在本書中,我始終堅持下面的示例。

有人可以幫我為什么我的播放按鈕不起作用嗎? 單擊播放按鈕后,游戲應開始,並應導航到下一個活動。

主頁代碼

<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"
tools:context="com.packtpub.mathgamechapter3a.MainActivity">

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="My Math Game"
    android:id="@+id/textView"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="25dp"
    android:textSize="30sp" />

<ImageView
    android:layout_width="150dp"
    android:layout_height="150dp"
    android:id="@+id/imageView"
    android:src="@mipmap/ic_launcher"
    android:layout_below="@+id/textView"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="38dp" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Play"
    android:id="@+id/buttonPlay"
    android:layout_marginTop="28dp"
    android:layout_below="@+id/imageView"
    android:layout_alignRight="@+id/button2"
    android:layout_alignEnd="@+id/button2"
    android:layout_alignLeft="@+id/button2"
    android:layout_alignStart="@+id/button2" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="High Scores"
    android:id="@+id/button2"
    android:layout_below="@+id/buttonPlay"
    android:layout_centerHorizontal="true" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Quit"
    android:id="@+id/button3"
    android:layout_below="@+id/button2"
    android:layout_alignRight="@+id/buttonPlay"
    android:layout_alignEnd="@+id/buttonPlay"
    android:layout_alignLeft="@+id/button2"
    android:layout_alignStart="@+id/button2" />
</RelativeLayout>

Java代碼

package com.packtpub.mathgamechapter3a;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;


public class MainActivity extends Activity implements View.OnClickListener{

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final Button buttonPlay = (Button)findViewById(R.id.buttonPlay);
    buttonPlay.setOnClickListener(this);
}

@Override
public void onClick(View view) {
    Intent i;
    i = new Intent(this, GameActivity.class);
    startActivity(i);
}

}

應瀏覽的游戲頁面

<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"
tools:context="com.packtpub.mathgamechapter3a.GameActivity">


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="2"
    android:id="@+id/textPartA"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginTop="24dp"
    android:textSize="70sp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="x"
    android:id="@+id/textOperator"
    android:layout_alignTop="@+id/textPartA"
    android:layout_centerHorizontal="true"
    android:textSize="70sp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="2"
    android:id="@+id/textPartB"
    android:layout_alignTop="@+id/textOperator"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:textSize="70sp" />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:text="="
    android:id="@+id/textView4"
    android:layout_below="@+id/textOperator"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="92dp"
    android:textSize="70sp" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="2"
    android:id="@+id/buttonChoice1"
    android:layout_below="@+id/textView4"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_marginTop="99dp"
    android:textSize="40sp" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="4"
    android:id="@+id/buttonChoice2"
    android:layout_alignTop="@+id/buttonChoice1"
    android:layout_centerHorizontal="true"
    android:textSize="40sp" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="6"
    android:id="@+id/buttonChoice3"
    android:layout_alignTop="@+id/buttonChoice2"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:textSize="40sp" />
</RelativeLayout>

Java代碼

package com.packtpub.mathgamechapter3a;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;


public class GameActivity extends Activity implements View.OnClickListener{

int correctAnswer;
Button buttonObjectChoice1;
Button buttonObjectChoice2;
Button buttonObjectChoice3;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //The next line loads our UI design to the screen
    setContentView(R.layout.activity_game);

    //Here we initialize all our variables
    int partA = 9;
    int partB = 9;
    correctAnswer = partA * partB;
    int wrongAnswer1 = correctAnswer - 1;
    int wrongAnswer2 = correctAnswer + 1;

    /*Here we get a working object based on either the button
      or TextView class and base as well as link our new objects
      directly to the appropriate UI elements that we created previously*/

    TextView textObjectPartA = (TextView)findViewById(R.id.textPartA);
    TextView textObjectPartB = (TextView)findViewById(R.id.textPartB);
    buttonObjectChoice1 = (Button)findViewById(R.id.buttonChoice1);
    buttonObjectChoice2 = (Button)findViewById(R.id.buttonChoice2);
    buttonObjectChoice3 = (Button)findViewById(R.id.buttonChoice3);

    //Now we use the setText method of the class on our objects
    //to show our variable values on the UI elements.

    textObjectPartA.setText("" + partA);
    textObjectPartB.setText("" + partA);

    //which button receives which answer, at this stage is arbitrary.

    buttonObjectChoice1.setText("" + correctAnswer);
    buttonObjectChoice2.setText("" + wrongAnswer1);
    buttonObjectChoice3.setText("" + wrongAnswer2);

    buttonObjectChoice1.setOnClickListener(this);
    buttonObjectChoice2.setOnClickListener(this);
    buttonObjectChoice3.setOnClickListener(this);


}//onCreate ends here

@Override
public void onClick(View view) {
    //declare a new int to be used in all the cases
    int answerGiven=0;
    switch (view.getId()) {

        case R.id.buttonChoice1:
  //initialize a new int with the value contained in buttonObjectChoice1
            //Remember we put it there ourselves previously
         answerGiven = Integer.parseInt("" + buttonObjectChoice1.getText());

            //is it the right answer?
            if(answerGiven==correctAnswer) {//yay it's the right answer
               Toast.makeText(getApplicationContext(), 
"Well done!", Toast.LENGTH_LONG).show();
            }else{//uh oh!
                Toast.makeText(getApplicationContext(),
 "Sorry that's wrong", Toast.LENGTH_LONG).show();
            }
            break;

        case R.id.buttonChoice2:
            //same as previous case but using the next button
    answerGiven = Integer.parseInt("" + buttonObjectChoice2.getText());
            if(answerGiven==correctAnswer) {
                Toast.makeText(getApplicationContext(), "Well done!",
Toast.LENGTH_LONG).show();
            }else{
                Toast.makeText(getApplicationContext(),
 "Sorry that's wrong", Toast.LENGTH_LONG).show();
            }
            break;

        case R.id.buttonChoice3:
            //same as previous case but using the next button
      answerGiven = Integer.parseInt("" + buttonObjectChoice3.getText());
            if(answerGiven==correctAnswer) {
                Toast.makeText(getApplicationContext(), "Well done!",
Toast.LENGTH_LONG).show();
            }else{
                Toast.makeText(getApplicationContext(),"Sorry that's wrong",
Toast.LENGTH_LONG).show();
            }
            break;

    }

}

}

好,您需要對被點擊的內容做一個if語句。

if(view.getId() == R.id.buttonPlay)
{
Intent intent = new Intent(getBaseContext(), GameActivity.class);
startActivity(intent);
}

還要確保游戲活動已在清單文件中注冊。

我檢查了您的代碼是否正確。

我認為您忘記在清單中注冊活動了

請檢查

Intent in = getIntent();

丟失..第二個活動應包含此行,並添加此行

if(view.getId() == R.id.buttonPlay)
{
Intent inte = new Intent(MainActivity.this, GameActivity.class);
startActivity(intent);
}

並在清單文件中注冊

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM