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