【问题标题】:Android Studio - When I launch my app and navigate to a menu, the buttons go to an empty Screen instead of the activityAndroid Studio - 当我启动我的应用程序并导航到菜单时,按钮会转到空屏幕而不是活动
【发布时间】:2018-01-20 15:36:10
【问题描述】:

当我打开我的应用并浏览我的菜单时,我来到一个包含多个按钮的页面。每个按钮都旨在将数据发送到另一个活动,然后启动它。它可以正常发送数据,但是当我按下按钮时,它会将我带到一个空白页面。当我点击手机上的后退按钮时,它会显示正确的屏幕。我添加了显示在空白屏幕上的纯文本,但直到我点击返回按钮后,textViews 才会出现。

活动java文件:

package com.example.boys.fishkeeper;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;

public class Categories extends AppCompatActivity {

    private Button barbsButton;
    private Button tetrasButton;
    private Button livebearersButton;
    private Button gouramisButton;
    private Button cichlidsButton;
    private Button bettasButton;
    private Button rasborasButton;
    private Button daniosButton;
    private Button snakeheadsButton;
    private Button mormyridsButton;
    private Button catfishButton;
    private Button knifefishButton;
    private Button loachesButton;
    private Button pufferfishButton;
    private Button plecsButton;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_categories);

        barbsButton = (Button) findViewById(R.id.barbsButton);
        tetrasButton = (Button) findViewById(R.id.tetrasButton);
        livebearersButton = (Button) findViewById(R.id.livebearersButton);
        gouramisButton = (Button) findViewById(R.id.gouramisButton);
        cichlidsButton = (Button) findViewById(R.id.cichlidsButton);
        bettasButton = (Button) findViewById(R.id.bettaButton);
        rasborasButton = (Button) findViewById(R.id.rasborasButton);
        daniosButton = (Button) findViewById(R.id.daniosButton);
        snakeheadsButton = (Button) findViewById(R.id.snakeheadsButton);
        mormyridsButton = (Button) findViewById(R.id.mormyridsButton);
        catfishButton = (Button) findViewById(R.id.catfishButton);
        knifefishButton = (Button) findViewById(R.id.knifefishButton);
        loachesButton = (Button) findViewById(R.id.loachesButton);
        pufferfishButton = (Button) findViewById(R.id.pufferfishButton);
        plecsButton = (Button) findViewById(R.id.plecsButton);

        barbsButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {


                Intent intent = new Intent(getBaseContext(), FishInfo.class);
                intent.putExtra("typeName", "Barbs");
                startActivity(intent);

                Intent i = new Intent(getApplicationContext(),FishInfo.class);
                startActivity(i);




            }
        });
        bettasButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {


                Intent intent = new Intent(getBaseContext(), FishInfo.class);
                intent.putExtra("typeName", "Bettas");
                intent.putExtra("typeInfo", "Betta are incredibly aggresive towards their own species. They will fight each other to the death. Plankat betta may survive with tetra and catfish but siamese fighters can only be kept singly(as a male) or in species tanks(if they are female).");

                startActivity(intent);

                Intent i = new Intent(getApplicationContext(),FishInfo.class);
                startActivity(i);




            }
        });
        tetrasButton.setOnClickListener(new View.OnClickListener() {


            public void onClick(View view) {


                Intent intent = new Intent(getBaseContext(), FishInfo.class);
                intent.putExtra("typeName", "Tetras");
                startActivity(intent);

                Intent i = new Intent(getApplicationContext(),FishInfo.class);
                startActivity(i);




            }
        });
        livebearersButton.setOnClickListener(new View.OnClickListener() {


            public void onClick(View view) {


                Intent intent = new Intent(getBaseContext(), FishInfo.class);
                intent.putExtra("typeName", "Livebearers");
                intent.putExtra("typeInfo", "Livebearers give birth to live young and are hardy fish. They are usually small(less than 6 cm)");
                startActivity(intent);

                Intent i = new Intent(getApplicationContext(),FishInfo.class);
                startActivity(i);




            }
        });
        gouramisButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {


                Intent intent = new Intent(getBaseContext(), FishInfo.class);
                intent.putExtra("typeName", "Gouramis");
                intent.putExtra("typeInfo", "Gouramis");
                startActivity(intent);

                Intent i = new Intent(getApplicationContext(),FishInfo.class);
                startActivity(i);




            }
        });
        cichlidsButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {


                Intent intent = new Intent(getBaseContext(), FishInfo.class);
                intent.putExtra("typeName", "Cichlids");
                intent.putExtra("typeInfo", "Gouramis");
                startActivity(intent);

                Intent i = new Intent(getApplicationContext(),FishInfo.class);
                startActivity(i);




            }



        });
        rasborasButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {


                Intent intent = new Intent(getBaseContext(), FishInfo.class);
                intent.putExtra("typeName", "Rasboras");
                intent.putExtra("typeInfo", "Gouramis");
                startActivity(intent);

                Intent i = new Intent(getApplicationContext(),FishInfo.class);
                startActivity(i);




            }
        });
        daniosButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {


                Intent intent = new Intent(getBaseContext(), FishInfo.class);
                intent.putExtra("typeName", "Danios");
                intent.putExtra("typeInfo", "Gouramis");
                startActivity(intent);

                Intent i = new Intent(getApplicationContext(),FishInfo.class);
                startActivity(i);




            }
        });
        snakeheadsButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {


                Intent intent = new Intent(getBaseContext(), FishInfo.class);
                intent.putExtra("typeName", "Snakeheads");
                intent.putExtra("typeInfo", "Gouramis");
                startActivity(intent);

                Intent i = new Intent(getApplicationContext(),FishInfo.class);
                startActivity(i);




            }
        });
        mormyridsButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {


                Intent intent = new Intent(getBaseContext(), FishInfo.class);
                intent.putExtra("typeName", "MormyRids");
                intent.putExtra("typeInfo", "Gouramis");
                startActivity(intent);

                Intent i = new Intent(getApplicationContext(),FishInfo.class);
                startActivity(i);




            }
        });
        catfishButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {


                Intent intent = new Intent(getBaseContext(), FishInfo.class);
                intent.putExtra("typeName", "Catfish");
                intent.putExtra("typeInfo", "Gouramis");
                startActivity(intent);

                Intent i = new Intent(getApplicationContext(),FishInfo.class);
                startActivity(i);




            }
        });
        knifefishButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {


                Intent intent = new Intent(getBaseContext(), FishInfo.class);
                intent.putExtra("typeName", "KnifeFish");
                intent.putExtra("typeInfo", "Gouramis");
                startActivity(intent);

                Intent i = new Intent(getApplicationContext(),FishInfo.class);
                startActivity(i);




            }
        });
        loachesButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {


                Intent intent = new Intent(getBaseContext(), FishInfo.class);
                intent.putExtra("typeName", "Loaches");
                intent.putExtra("typeInfo", "Loaches have an erectable spine below their eyes. They genrally grow quite large and benefit from living in groups.");
                startActivity(intent);

                Intent i = new Intent(getApplicationContext(),FishInfo.class);
                startActivity(i);




            }
        });
        pufferfishButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {


                Intent intent = new Intent(getBaseContext(), FishInfo.class);
                intent.putExtra("typeName", "PufferFish");
                intent.putExtra("typeInfo", "They are cool!");
                startActivity(intent);

                Intent i = new Intent(getApplicationContext(),FishInfo.class);
                startActivity(i);




            }
        });
        plecsButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {


                Intent intent = new Intent(getBaseContext(), FishInfo.class);
                intent.putExtra("typeName", "Plecs");
                intent.putExtra("typeInfo", "Plecs are cool!");
                startActivity(intent);

                Intent i = new Intent(getApplicationContext(),FishInfo.class);
                startActivity(i);




            }
        });


    }
}

XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.boys.fishkeeper.FishInfo">

    <TextView
        android:id="@+id/nameOfFish"
        android:layout_width="317dp"
        android:layout_height="48dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="Name"
        android:textAlignment="center"
        android:textSize="30sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/fishInfo"
        android:layout_width="314dp"
        android:layout_height="390dp"
        android:layout_marginBottom="8dp"
        android:layout_marginEnd="8dp"
        android:layout_marginStart="8dp"
        android:layout_marginTop="8dp"
        android:text="Info"
        android:textSize="24sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/nameOfFish" />

</android.support.constraint.ConstraintLayout>

【问题讨论】:

  • 在你的类中实现 onCick 就可以避免代码中的大量重复
  • 每次点击有 两个 startActivity。这是为什么呢?
  • 你能发布带有按钮的xml代码吗?

标签: java android xml textview


【解决方案1】:

您两次启动相同的活动,第二次,它没有数据,因此问题因此删除

Intent intent = new Intent(getBaseContext(), FishInfo.class);
intent.putExtra("typeName", "Barbs");
// or other data
startActivity(intent);

// start FishInfo activity with no data
// remove every occurrence of this 
//Intent i = new Intent(getApplicationContext(),FishInfo.class);
//startActivity(i);

【讨论】:

  • **Intent intent = new Intent(getBaseContext(), FishInfo.class); intent.putExtra("typeName", "Barbs");开始活动(意图); ** 也足以启​​动它?
  • @B.Sommer 是的,您只需要 Intent 的一个实例即可开始一项特定活动,无论是否有数据
【解决方案2】:

您正在运行两次活动:一次有额外数据,一次没有。所以,你所描述的是正确的行为。
onClick() 方法替换为:

public void onClick(View view) {
   Intent intent = new Intent(getBaseContext(), FishInfo.class);
   intent.putExtra("typeName", "Barbs");
   startActivity(intent);    
}

这将发送数据并开始您的活动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多