Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将第二个活动中图像的可视性设置为从主活动可见?_Java_Android - Fatal编程技术网

Java 将第二个活动中图像的可视性设置为从主活动可见?

Java 将第二个活动中图像的可视性设置为从主活动可见?,java,android,Java,Android,我在主活动中的按钮有点问题,该按钮用于将活动2中的可见性和ImageView从不可见更改为可见。我还没有研究如何将信息从一个活动传递到另一个活动这基本上就是我迄今为止所做的全部工作: final Button getAchievement = findViewById(R.id.achievementButton); final Button achievementActivity = findViewById(R.id.achievementActivity); final

我在主活动中的按钮有点问题,该按钮用于将活动2中的可见性和ImageView从不可见更改为可见。我还没有研究如何将信息从一个活动传递到另一个活动这基本上就是我迄今为止所做的全部工作:

  final Button getAchievement = findViewById(R.id.achievementButton);
    final Button achievementActivity = findViewById(R.id.achievementActivity);
    final ImageView achievementImage = findViewById(R.id.achievementImage);

    getAchievement.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Toast.makeText(MainActivity.this, "You unlocked this achievement!", Toast.LENGTH_SHORT).show();

                achievementImage.setVisibility(View.VISIBLE);
        }
    });

    achievementActivity.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent intent = new Intent(MainActivity.this, Achievements.class);
            MainActivity.this.startActivity(intent);

        }
    });

提前感谢您

您可以创建本地活动,并将信息从一个活动发送到另一个活动

使用SharedReferences来存储一些键,即标志。 将onclick…中的标志设置为true,并将该标志布尔值存储在SharedReference中

在第二个活动中,从SP读取布尔值。如果标志为true,则相应地处理视图的可见性

SharedReferences的链接:


因此,最简单的实现方法可能是使用
意图
一种基本方法来浏览应用程序。更多关于意图

我编写了一个简单的应用程序,希望它能帮助您理解Intent的用法以及如何在活动之间发送数据

首先是activity_main.xml:

现在是activity_second.xml:

要返回主要活动,请使用手机上的“后退”按钮


希望有帮助

那很有帮助!谢谢!
<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"
    tools:context=".MainActivity">


    <Button
        android:id="@+id/changeState"
        android:text="Change state"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content" />

    <Button
        android:id="@+id/nextActivity"
        android:text="GO!"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content" />

</LinearLayout>
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

    private int state = View.GONE;
    public static final String STATE_MESSAGE = "ImageViewState";

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

        // consider to use a switch in an improved version since it has only two states
        Button changeState = findViewById(R.id.changeState);
        changeState.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (state == View.GONE){
                    state = View.VISIBLE;
                } else {
                    state = View.GONE;
                }
            }

        });

        Button nextActivity = findViewById(R.id.nextActivity);
        nextActivity.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                intent.putExtra(STATE_MESSAGE, state);
                startActivity(intent);
            }
        });
    }
}
<?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"
    tools:context=".SecondActivity">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/ic_launcher_background"
        />
</LinearLayout>
import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.widget.ImageView;

public class SecondActivity extends AppCompatActivity {

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

        ImageView imageView = findViewById(R.id.imageView);
        imageView.setVisibility(getIntent().getIntExtra(MainActivity.STATE_MESSAGE, 0));
    }
}