Cardview 不会更改我当前的 activity(Intent 无效)
Cardview won't change my current activity (Intent won't work)
我正在创建一个语言应用程序作为 android 学校的家庭作业。
现在我正在设置一些可点击的 CardView(位于 "LevelsHub" 中)以将用户带到另一个视图(称为 "ProfileActivity"),但出于某种原因 INTENT没有按应有的方式工作,它使我回到相同的视图 ("LevelsHub"),即使我已经在应用程序的其他部分使用过它。这里会发生什么?
我已经按照这个很棒的教程学习了。
https://www.youtube.com/watch?v=VUPM387qyrw and this one too 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>
您在同一行中有开始 activity 的代码,因此将跳过 ;
之后的代码。正确格式化代码并将 startActivity()
移动到下一行。
case R.id.pronombresBtn1 :
i = new Intent(LevelsHub.this,profileActivity.class);
startActivity(i);
break;
在您的 CardView
中添加两个属性
android:clickable="true"
android:focusable="true"
它会起作用。
如有任何问题,请随时发表评论。
所以基本上经过一些挖掘、调试等我能够找到我的问题的答案。这基本上是 LevelsHub
activity 是正确的,但在我的 profileActivity
activity 中,我有一个按钮没有正确链接到我为它准备的 OnClickListener
,所以我所做的一切都是正确的,现在就像一个魅力。
感谢所有帮助过我并提出建议的人。
我正在创建一个语言应用程序作为 android 学校的家庭作业。
现在我正在设置一些可点击的 CardView(位于 "LevelsHub" 中)以将用户带到另一个视图(称为 "ProfileActivity"),但出于某种原因 INTENT没有按应有的方式工作,它使我回到相同的视图 ("LevelsHub"),即使我已经在应用程序的其他部分使用过它。这里会发生什么?
我已经按照这个很棒的教程学习了。
https://www.youtube.com/watch?v=VUPM387qyrw and this one too https://www.youtube.com/watch?v=K2V6Y7zQ8NU
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>
您在同一行中有开始 activity 的代码,因此将跳过 ;
之后的代码。正确格式化代码并将 startActivity()
移动到下一行。
case R.id.pronombresBtn1 :
i = new Intent(LevelsHub.this,profileActivity.class);
startActivity(i);
break;
在您的 CardView
android:clickable="true"
android:focusable="true"
它会起作用。
如有任何问题,请随时发表评论。
所以基本上经过一些挖掘、调试等我能够找到我的问题的答案。这基本上是 LevelsHub
activity 是正确的,但在我的 profileActivity
activity 中,我有一个按钮没有正确链接到我为它准备的 OnClickListener
,所以我所做的一切都是正确的,现在就像一个魅力。
感谢所有帮助过我并提出建议的人。