android - 我正在使用 Android Studio 创建一个应用程序。我遇到的情况是我试图使用来自另一个活动的图像
问题描述
该应用程序的想法是通过记住图像来解决问题。我已经完成了majoriti 代码,但我遇到了一种情况是我试图使用来自另一个活动的图像。
这是 MainActivity 的代码。我正在设置一个计时器,用于将多边形记忆为给定的 6 个 img。
public class MainActivity extends AppCompatActivity {
private TextView Text1;
public ImageView imageView;
public ImageView imageView2;
public ImageView imageView3;
public ImageView imageView4;
public ImageView imageView5;
public ImageView imageView6;
Timer timer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
imageView = findViewById(R.id.imageView);
imageView2 = findViewById(R.id.imageView2);
imageView3 = findViewById(R.id.imageView3);
imageView4 = findViewById(R.id.imageView4);
imageView5 = findViewById(R.id.imageView5);
imageView6 = findViewById(R.id.imageView6);
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
Intent intent = new Intent(MainActivity.this, Question1.class);
startActivity(intent);
finish();
}
},5000);
}
}
下面的代码是第二个活动。我正在尝试修复位于 "imageView.setImageResource(getResources().getIdentifier(quiz.get(0), "drawable",getPackageName())) 的代码;
public class Question1 extends AppCompatActivity {
private TextView Question1;
private Button ans1, ans2, ans3, ans4, ans5, ans6, next;
private String Right_Answer;
private int Right_Answer_Count;
private int quizCount = 1;
ArrayList<ArrayList<String>> quizArray = new ArrayList<>();
String quizData[][] = {
{"heptagon","triangle","quadrilateral","pentagon","hexagon","decagon"}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_question1);
Question1 = findViewById(R.id.Question1);
ans1 = findViewById(R.id.ans1);
ans2 = findViewById(R.id.ans2);
ans3 = findViewById(R.id.ans3);
ans4 = findViewById(R.id.ans4);
ans5 = findViewById(R.id.ans5);
ans6 = findViewById(R.id.ans6);
next = findViewById(R.id.next);
for (int i=0; i < quizData.length; i++){
ArrayList<String> tmpArray = new ArrayList<>();
tmpArray.add(quizData[i][0]);
tmpArray.add(quizData[i][1]);
tmpArray.add(quizData[i][2]);
tmpArray.add(quizData[i][3]);
tmpArray.add(quizData[i][4]);
tmpArray.add(quizData[i][5]);
quizArray.add(tmpArray);
}
Show_Next_Quiz();
}
public void Show_Next_Quiz(){
Random random = new Random();
int Random_Num = random.nextInt(quizArray.size());
ArrayList<String> quiz = quizArray.get(Random_Num);
imageView.setImageResource(
getResources().getIdentifier(quiz.get(0), "drawable",getPackageName()));
imageView2.setImageResource(
getResources().getIdentifier(quiz.get(0), "drawable",getPackageName()));
imageView3.setImageResource(
getResources().getIdentifier(quiz.get(0), "drawable",getPackageName()));
imageView4.setImageResource(
getResources().getIdentifier(quiz.get(0), "drawable",getPackageName()));
imageView5.setImageResource(
getResources().getIdentifier(quiz.get(0), "drawable",getPackageName()));
imageView6.setImageResource(
getResources().getIdentifier(quiz.get(0), "drawable",getPackageName()));
Right_Answer = quiz.get(1);
Collections.shuffle(quiz);
ans1.setText(quiz.get(0));
ans2.setText(quiz.get(1));
ans3.setText(quiz.get(2));
ans4.setText(quiz.get(3));
ans5.setText(quiz.get(4));
ans6.setText(quiz.get(5));
quizArray.remove(Random_Num);
}
public void Check_Answer(View view) {
Button Answer = findViewById(view.getId());
String btnText = Answer.getText().toString();
String alertTitle;
if (btnText.equals(Right_Answer)){
alertTitle = "Correct !!!";
Right_Answer_Count++;
} else {
alertTitle = "Sorry, you are wrong =(";
}
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(alertTitle);
builder.setMessage("Answer : " + Right_Answer);
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
if (quizArray.size() < 1){
Show_Result();
} else {
quizCount++;
Show_Next_Quiz();
}
}
});
builder.setCancelable(false);
builder.show();
}
public void Show_Result(){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Result");
builder.setMessage(Right_Answer_Count + " / 10");
builder.setPositiveButton("Try Again?", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
recreate();
}
});
builder.setNegativeButton("Quit", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int i) {
finish();
}
});
builder.show();
}
}
因此,我不知道如何让第二个活动使用 MainActivity 中的图像。
解决方案
您可以将图像的资源 ID 作为 Intent extra 传递:
推荐阅读
- performance - 优化复杂的 CUDA 内核以提高内存和计算效率
- react-native - “SyntaxError: Unexpected token”但未指定标记,错误指示在空白处
- kubernetes - 有没有办法从 kube 集群中导出资源,以便可以将其应用于另一个集群
- python-3.x - 使用 for 循环绘制多个图
- python - 对 Pandas 中轴的困惑
- wso2 - 将参数传递给 WSO2 AM 后台 api
- java - 单击 Web 应用程序中的另一个元素后删除输入的值
- java - JpaPagingItemReader 无法读取数据并移至下一步
- assembly - 什么是“嗯”?我试图更好地理解汇编代码,这是我正在阅读的代码中出现的东西
- firebase - 如何使用firestore获取对象的数组参数?