【发布时间】:2014-03-09 09:17:55
【问题描述】:
我正在尝试构建一个类似测验的应用程序,用于在 android 中猜测标志。基本上我有一个名为 SetFlagActivity 的活动,如果单击按钮,它会从 MainActivity 中的 startFlagActivity(View v) 接收意图。它需要做两件事:#1 如果用户输入正确的标志名称加载新标志和#2 显示消息:“正确”否则只显示“错误”。
按下按钮时会显示正确的消息,但包含标志图像的 ImageView 会消失。同样,当再次单击该按钮时,应用程序崩溃并出现以下output:
我认为图像没有出现是因为它显示在 MainActivity 中,所以我使用 finish() 返回。这修复了应用程序崩溃,但是当我再次单击按钮时没有任何反应......没有显示任何消息。所以问题是我如何以正确的方式使用 SetFlagActivity 来显示我的消息并设置新图像..
我们将不胜感激。
这会获取输入并发送意图
public void startFlagActivity(View v){
EditText flagInput = (EditText) findViewById(R.id.inputFlag);
String message = flagInput.getText().toString();
Intent intent = new Intent(MainActivity.this, SetFlagActivity.class);
if(!message.equals(""))
intent.putExtra("flag", message);
MainActivity.this.startActivity(intent);
}
我的 SetFlagActivity 看起来像这样:
package ivve.projects.flags;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class SetFlagActivity extends Activity {
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button= (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startFlagActivity(v);
}
});
TextView text = (TextView) findViewById(R.id.displayAnswer);
Intent intent = getIntent();
String value = intent.getStringExtra("flag");
if(value.equals("Iceland")){
text.setText("correct");
}
else{
text.setText("wrong");
}
finish();
}
}
Edit1:StartFlagActivity 本身实际上并不是一个活动......它是 MainActivity 中的一个函数
Edit2:我已按照建议将 onClick 处理程序添加到我的 SetFlagActivity,但我收到一个错误“方法 startFlagActivity(View) is undefined for the type new View.OnClickListener(){}”不允许我调用 startFlagActivity 方法
【问题讨论】:
-
'R.id.displayAnswer' 这个TextView属于哪个布局?另外,我觉得当你开始意图时,finish() 发生在 oncreate() 内部。这真的很快。您可以尝试在完成 1 秒之前提供一个等待计时器,例如 sleep() 或 wait(),以测试您的代码。
-
我没有看到任何与你说的图片相关的代码??
-
R.id.displayAnswer 属于 activity_main.xml 布局。我应该在此活动中还是在我调用意图的活动中使用完成方法?
-
您需要通过 startFlagActivity() 定义 onClickListener 方法,因为您已将 onClick() 方法设置为。
-
啊.. 我知道你现在做了什么 - 我会编辑我的答案并指出你需要去的方向。
标签: android android-intent android-activity