我是Android Studio和Java的新手,已经从事了一段时间的项目,并且希望获得有关我似乎找不到任何教程或信息的问题的帮助。 我正在运行 Windows 7专业版的计算机上使用android Studio版本3.1.4 。
我无法将我的所有按钮和所有可绘制对象都放到MainActivity
上,因此我希望将MainActivity
上的所有按钮以及我的所有可绘制对象都放在活动2中。
我的问题是,当我单击MainActivity
中的任何按钮时,无法确定如何在第二个活动中使可绘制对象更改颜色。
我的圆形画图是svg格式,直径为10mm
我已将3个按钮的所有相关代码粘贴到MainActivity
上可与3 svg drawable一起使用的位置,以便您可以看到它在虚拟设备或通过USB电缆连接的移动设备上的工作方式。
我还在主活动中添加了一个按钮,将您带到活动2,在其中放置了3个可绘制对象,我需要用它与主活动相同的方式进行工作,但第一个活动中的按钮会对其进行更改。
在我的项目中,我有很多按钮。单击每个按钮都会根据我的程序更改其相关SVG可绘制图形的颜色。可绘制对象是黑色的。每次单击都会使它们按此顺序更改为下一个颜色。白色,黄色,橙色,红色,然后变回黑色
所以我需要做的是在主活动中具有按钮,在活动2中具有可绘制对象。
如果在ctivity_main.xml
中单击了按钮1(属性为btn1),我希望传递到Activity2
的按钮信息使具有属性iv1
的可绘制对象更改颜色。
因此,如果您要单击Button1
,Button2
,Button3
,Button4
,然后使用转到activity2
按钮(属性btn), Activity2
从左到右将是白色,黄色,白色。
在此先感谢您的帮助。
<package com.example.chucky.svg;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class MainActivity extends AppCompatActivity {
private Button button;
int[] colors = {0xffffffff, 0xffffff00, 0xffff6600, 0xffff0000, 0xff000000};
int counter1 = -1;
int counter2 = -1;
int counter3 = -1;
ImageView iv1;
ImageView iv2;
ImageView iv3;
Button btn;
Button btn1;
Button btn2;
Button btn3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.btn);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openActivity2();
}
});
btn1 = (Button) findViewById(R.id.btn1);
btn2 = (Button) findViewById(R.id.btn2);
btn3 = (Button) findViewById(R.id.btn3);
iv1 = (ImageView) findViewById(R.id.iv1);
iv2 = (ImageView) findViewById(R.id.iv2);
iv3 = (ImageView) findViewById(R.id.iv3);
btn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter3++;
if (counter3> colors.length -1){
counter3 = 0;
}
iv3.setColorFilter(colors[counter3]);
}
});
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter2++;
if (counter2> colors.length - 1){
counter2 = 0;
}
iv2.setColorFilter(colors[counter2]);
}
});
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
counter1++;
if (counter1> colors.length - 1){
counter1 = 0;
}
iv1.setColorFilter(colors[counter1]);
}
});
}
public void openActivity2() {
Intent intent = new Intent(this, Activity2.class);
startActivity(intent);
}
}
Activity2
类
package com.example.chucky.svg;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class Activity2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_2);
}
}
Activity_main
xml
<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=".MainActivity">
<Button
android:id="@+id/btn1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text=" Button 1"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.091"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.498" />
<Button
android:id="@+id/btn2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Button 2"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.501"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.498" />
<Button
android:id="@+id/btn3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Button 3"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.895"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.498" />
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Go to Activity 2"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.087" />
<ImageView
android:id="@+id/iv1"
android:layout_width="56dp"
android:layout_height="50dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.137"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.296"
app:srcCompat="@drawable/ic_circle_e" />
<ImageView
android:id="@+id/iv2"
android:layout_width="56dp"
android:layout_height="50dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.296"
app:srcCompat="@drawable/ic_circle_e" />
<ImageView
android:id="@+id/iv3"
android:layout_width="56dp"
android:layout_height="50dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.852"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.296"
app:srcCompat="@drawable/ic_circle_e" />
</android.support.constraint.ConstraintLayout>
activity_2
xml
<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=".Activity2">
<ImageView
android:id="@+id/iv3"
android:layout_width="56dp"
android:layout_height="50dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.852"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.296"
app:srcCompat="@drawable/ic_circle_e" />
<ImageView
android:id="@+id/iv2"
android:layout_width="56dp"
android:layout_height="50dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.296"
app:srcCompat="@drawable/ic_circle_e" />
<ImageView
android:id="@+id/iv1"
android:layout_width="56dp"
android:layout_height="50dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.137"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.296"
app:srcCompat="@drawable/ic_circle_e" />
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginLeft="8dp"
android:layout_marginRight="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:text="Activity2"
android:textSize="20sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
答案 0 :(得分:0)
您需要做的是将信息传递给第二个活动,提取并利用该信息。
有了Intent Extra,您的目标就可以实现,就像这样:
首先,在第二个活动中声明一个唯一的常量变量,该变量将保存整个通信中的信息。
public static final String EXTRA_USER_ID = "userId";
现在,FirstActivity
正在发送信息:
String changeColorToBlack = " black"
Intent intent = new Intent(firstActivty.this, SecondActivity.class);
intent.putExtra(SecondActivity.EXTRA_COLOR_KEY, changeColorToBlack);
startActivity(intent);
SecondActivity
可以检索这样的信息
String colorIdKey = getIntent().getStringExtra(EXTRA_COLOR_ID);
if (colorIdKey == null) {
throw new IllegalArgumentException("Must pass EXTRA_COLOR_KEY");
}
//colorIdKey is your color
仅此而已。您只需要一个Intent Extra,即可在2个活动之间传递信息
答案 1 :(得分:0)
激活所需的最简单方法是将颜色代码作为参数传递给第二个活动
在Activity1.class中执行
public void openActivity2(){
Intent intent = new Intent(this, Activity2.class);
//将颜色值作为捆绑商品传递
intent.putExtra("color1", <color_code1>); intent.putExtra("color2", <color_code2>); intent.putExtra("color3", <color_code3>); startActivity(intent); }
在Activity2.class中
public class Activity2 extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_2); Bundle extras = getIntent().getExtras(); if(extras != null){ String color1 = extras.getString("color1"); String color2 = extras.getString("color2"); String color3 = extras.getString("color3"); // set values to image views here } } }
此处的官方文档:https://developer.android.com/guide/components/activities/parcelables-and-bundles#kotlin
答案 2 :(得分:0)
您在整数数组
int[] colors
中具有颜色代码,并且在counter
变量中选择了位置。顺便说一句将颜色设置为imageview |通过意图传递它。
尝试以下代码:
Intent i = new Intent(MainActivity.this,Activity2.class);
i.putExtra("COLOR_1",colors[counter1]);
i.putExtra("COLOR_2",colors[counter2]);
i.putExtra("COLOR_3",colors[counter3]);
startActivity(i);
然后在Activity2
中获取意图值并将其设置为对应的ImageView
。
将此代码添加到onCreate()
Bundle bundle = getIntent().getExtras();
if(bundle != null)
{
iv1.setColorFilter(bundle.getInt("COLOR_1",0));
iv2.setColorFilter(bundle.getInt("COLOR_2",0));
iv3.setColorFilter(bundle.getInt("COLOR_3",0));
}