【问题标题】:Cardview won't change my current activity (Intent won't work)Cardview 不会改变我当前的活动(意图不起作用)
【发布时间】:2019-01-10 20:50:57
【问题描述】:

我正在使用 Android 创建一个语言应用程序作为学校的作业。
现在我正在设置一些可点击的 CardViews(位于“LevelsHub”中)以将用户带到另一个视图(称为“ProfileActivity”),但由于某种原因 INTENT 无法正常工作,它带我回到同一个视图(“LevelsHub”),即使我在应用程序的其他部分使用过它。这里会发生什么?

我已经关注了这个令人惊叹的家伙教程。
https://www.youtube.com/watch?v=VUPM387qyrw 这个也是https://www.youtube.com/watch?v=K2V6Y7zQ8NU

  • 尝试点击卡片本身,无效
  • 我已经尝试在卡片上添加按钮并在其上使用 Intent,但没有成功。
  • 循环浏览所有卡片,看看它们中的任何一张能带我去哪里
  • 用这家伙的switch方法https://www.youtube.com/watch?v=d6CfaWW7G5Q
  • 我试过一一分开,结果一样
  • package com.example.salo7.totonaku;
    
    import android.content.Intent;
    import android.graphics.Color;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.support.v7.widget.CardView;
    import android.view.View;
    import android.widget.Button;
    import android.widget.GridLayout;
    import android.widget.Toast;
    
    public class LevelsHub extends AppCompatActivity implements 
    View.OnClickListener {
    
     //GridLayout mainGrid;
     //CardView pronombresCard1;
     //CardView numeros1Card2;
     //CardView numeros2Card3;
     private Button  pronombresBtn1;
    
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_levels_hub);
    
         //mainGrid = (GridLayout) findViewById(R.id.mainGrid);
         pronombresBtn1 = (Button) findViewById(R.id.pronombresBtn1);
         //numeros1Btn2 = (Button) findViewById(R.id.numeros1Btn2);
         //numeros2Btn3 = (Button) findViewById(R.id.numeros2Btn3);
    
         //Add click listener
         pronombresBtn1.setOnClickListener(this);
    
    
         //Set Event
         //setSingleEvent (mainGrid);
         //setToggleEvent (mainGrid);
     }
    
    @Override
    public void onClick(View v) {
        Intent i;
    
        switch (v.getId()){
            case R.id.pronombresBtn1 : i = new Intent(LevelsHub.this, 
    profileActivity.class);startActivity(i); break;
            default:break;
        }
    }
    
    /*private void setToggleEvent(GridLayout mainGrid) {
        //ciclar childs de mainGrid
        for (int i=0;i<mainGrid.getChildCount();i++){
            final CardView cardView = (CardView) mainGrid.getChildAt(i);
            cardView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (cardView.getCardBackgroundColor().getDefaultColor() == 
    -1){
                        //Cambia el color
    
    cardView.setCardBackgroundColor(Color.parseColor("#FF6F00"));
                        Toast.makeText(LevelsHub.this,"State: 
    true",Toast.LENGTH_SHORT).show();
                    }else{
    
    cardView.setCardBackgroundColor(Color.parseColor("#FFFFFF"));
                        Toast.makeText(LevelsHub.this,"State: 
    false",Toast.LENGTH_SHORT).show();
                    }
                }
            });
        }
    }*/
    
    /*private void setSingleEvent(GridLayout mainGrid) {
        //ciclar childs de mainGrid
        for (int i=0;i<mainGrid.getChildCount();i++){
            CardView cardView = (CardView) mainGrid.getChildAt(i);
            final int finalI = i;
            cardView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //Toast.makeText(LevelsHub.this,"Cliqueado en index " + 
    finalI,Toast.LENGTH_SHORT).show();
                    if (finalI == 0){
                        Toast.makeText(LevelsHub.this,"Clicado 
    pronombres",Toast.LENGTH_SHORT).show();
                        Intent accountIntent = new Intent(LevelsHub.this, 
    profileActivity.class);
                        startActivity(accountIntent);
                        finish();
                    }
                }
            });
        }
     }*/
    }
    

    它应该只带我去另一个视图,有人可以帮我一下吗?

    更新 不知道 XML 是解释我的错误所必需的,但这里是:)。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 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"
    android:orientation="vertical"
    android:weightSum="10"
    tools:context=".LevelsHub">
    <!--android:background="@drawable/bg"-->
    <RelativeLayout
        android:layout_weight="2"
        android:layout_width="match_parent"
        android:layout_height="0dp">
    
        <TextView
            android:id="@+id/textGrid"
            android:text="NIVELES"
            android:textSize="34sp"
            android:textColor="@android:color/white"
            android:layout_centerInParent="true"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    
    </RelativeLayout>
    
    <GridLayout
        android:id="@+id/mainGrid"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="8"
        android:alignmentMode="alignMargins"
        android:columnCount="2"
        android:columnOrderPreserved="false"
        android:padding="14dp"
        android:rowCount="3">
    
        <!--Row 1-->
        <!--Column 1-->
    
        <!--Column 2-->
        <android.support.v7.widget.CardView
            android:id="@+id/pronombresCard1"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            android:layout_marginBottom="16dp"
            app:cardCornerRadius="8dp"
            app:cardElevation="8dp">
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_margin="16dp"
                android:orientation="vertical">
    
                <ImageView
                    android:layout_width="107dp"
                    android:layout_height="102dp"
                    android:layout_gravity="center_vertical"
                    android:src="@drawable/logomakr_negro" />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Pronombres"
                    android:textAlignment="center"
                    android:textColor="@android:color/black"
                    android:textSize="18sp"
                    android:textStyle="bold" />
    
                <Button
                    android:id="@+id/pronombresBtn1"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Empezar" />
    
    
            </LinearLayout>
    
        </android.support.v7.widget.CardView>
    
        <android.support.v7.widget.CardView
            android:id="@+id/numeros1Card2"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            android:layout_marginBottom="16dp"
            app:cardCornerRadius="8dp"
            app:cardElevation="8dp">
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_margin="16dp"
                android:orientation="vertical">
    
                <ImageView
                    android:layout_width="107dp"
                    android:layout_height="102dp"
                    android:layout_gravity="center_vertical"
                    android:src="@drawable/logomakr_negro" />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Números 1"
                    android:textAlignment="center"
                    android:textColor="@android:color/black"
                    android:textSize="18sp"
                    android:textStyle="bold" />
    
                <Button
                    android:id="@+id/numeros1Btn2"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Empezar" />
    
    
            </LinearLayout>
    
        </android.support.v7.widget.CardView>
    
        <!--Row 2-->
        <!--Column 1-->
        <android.support.v7.widget.CardView
            android:id="@+id/numeros2Card3"
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            android:layout_marginBottom="16dp"
            app:cardCornerRadius="8dp"
            app:cardElevation="8dp">
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_margin="16dp"
                android:orientation="vertical">
    
                <ImageView
                    android:layout_width="107dp"
                    android:layout_height="102dp"
                    android:layout_gravity="center_vertical"
                    android:src="@drawable/logomakr_negro" />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Números 2"
                    android:textAlignment="center"
                    android:textColor="@android:color/black"
                    android:textSize="18sp"
                    android:textStyle="bold" />
    
                <Button
                    android:id="@+id/numeros2Btn3"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Empezar" />
    
    
            </LinearLayout>
    
        </android.support.v7.widget.CardView>
    
        <!--Column 2-->
        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_rowWeight="1"
            android:layout_columnWeight="1"
            android:layout_marginLeft="16dp"
            android:layout_marginRight="16dp"
            android:layout_marginBottom="16dp"
            app:cardCornerRadius="8dp"
            app:cardElevation="8dp">
    
            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal|center_vertical"
                android:layout_margin="16dp"
                android:orientation="vertical">
    
                <ImageView
                    android:layout_width="107dp"
                    android:layout_height="102dp"
                    android:layout_gravity="center_vertical"
                    android:src="@drawable/logomakr_negro" />
    
                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="¡Más niveles en camino!"
                    android:textAlignment="center"
                    android:textColor="@android:color/black"
                    android:textSize="18sp"
                    android:textStyle="bold" />
    
    
            </LinearLayout>
    
        </android.support.v7.widget.CardView>
    
    </GridLayout>
    
    </LinearLayout>
    

    【问题讨论】:

    • 您想在点击时打开哪个活动?目前,您正尝试在点击事件时打开ProfileActivity
    • 你的 XML 在哪里?
    • 您是否将这两个活动都添加到了您的 AndroidManifest.xml 中?
    • 抱歉,我刚刚在那里留下了一个测试参数,它应该打开 ProfileActivity 只是为了测试,我猜它一旦工作就会带我进入我的新视图':)
    • @VasiliFedotov 是的,两者都添加到AndroidManifest.xml中

    标签: android android-activity android-cardview


    【解决方案1】:

    你有代码在同一行开始活动,所以;之后的代码将被跳过。正确格式化您的代码并将startActivity() 移动到下一行。

    case R.id.pronombresBtn1 : 
        i = new Intent(LevelsHub.this,profileActivity.class);
        startActivity(i); 
    break;
    

    【讨论】:

    • 感谢您列出可能的解决方案,遗憾的是,即使我按照您所说的方式进行了更改,它也不起作用:(
    【解决方案2】:

    在您的 CardView

    中添加两个属性
    android:clickable="true"
    android:focusable="true"
    

    它会起作用的。

    如果您有任何问题,请随时发表评论。

    【讨论】:

      【解决方案3】:

      所以基本上经过一些挖掘、调试等,我能够找到问题的答案。这基本上是LevelsHub 活动是正确的,但在我的profileActivity 活动中,我有一个按钮没有正确链接到我拥有的OnClickListener,所以我所做的一切都是正确的,现在就像一个魅力.
      感谢所有帮助过我并提供建议的人。

      【讨论】:

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