【问题标题】:android access EditText data in a new activity after onClickandroid在onClick之后在新活动中访问EditText数据
【发布时间】:2017-02-28 21:06:25
【问题描述】:

我是一个新的 android 程序员,我正在使用 android studio。我正在创建一个成绩计算器应用程序。我让用户在第一个布局/活动中输入分级比例,然后我可以跳转到第二个布局/活动。但我不确定如何访问我的第二个活动文件中的数据。我在第二个活动中有一个文本视图,我正在测试是否可以通过更改第二个活动中的文本视图来访问第一个活动中的编辑视图数据,但我失败了。请帮忙,谢谢。

这是我的活动代码。

@Override
public void onClick(View v){
    switch (v.getId()){
        case R.id.button_next:
            scale = (EditText)findViewById(R.id.gradeScale);
            String getInput = scale.getText().toString();
            TextView gc_scale=(TextView) findViewById(R.id.what);
            //gc_scale.setText(getInput);

            Intent i = new Intent(this, classEnterActivity.class);
            i.putExtra("scale",getInput);
            //i.putExtra("scaleG",getInput);
            startActivity(i);
            break;
    }
}

这是我的第二个活动文件,我想将 textView 输出更改为我在第一个活动中输入的字符串。有时我的应用会崩溃。

public class classEnterActivity extends Activity implements OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState){


    super.onCreate(savedInstanceState);
    setContentView(R.layout.course);

    //View ContinueButton = findViewById(R.id.button_next);
    //ContinueButton.setOnClickListener(this);
}

@Override
public void onClick(View v){

    TextView output=(TextView)findViewById(R.id.what);
    Intent intent=getIntent();
    String str=intent.getStringExtra("scale");
    output.setText(str);
    switch (v.getId()){
        case R.id.button_next:

            break;
    }
}}

【问题讨论】:

  • 什么错误?我猜只是一个 NullPointer - 注意:minimal reproducible example
  • 我想我的问题会变成如何在设置内容视图后添加 onClick 功能。因此,如果我在第二个文件中取消注释这两行: View ContinueButton = findViewById(R.id.button_next); ContinueButton.setOnClickListener(this);当我运行我的应用程序时,它显示“不幸的是,该应用程序已停止”
  • 转到您的日志。崩溃的错误是什么?
  • 是的,空指针异常
  • 您需要粘贴堆栈跟踪。我可以看到您还问了其他问题 - 您需要阅读我上面的链接。

标签: java android xml android-studio


【解决方案1】:

问题很可能是 getIntent() 返回 null

@Override
public void onClick(View v) {
    TextView output=(TextView)findViewById(R.id.what);
    Intent intent=getIntent();
    if (intent != null) {
        String str=intent.getStringExtra("scale");
        output.setText(str);
        ...
    }
}

output 也有可能为 null 甚至 v,您可以通过类似的 null 检查来修复这些错误

【讨论】:

    【解决方案2】:

    好的人。谢谢大家回答我的问题。我只是自己想通了。虽然不知道如何,但我基本上重写了我的第二个活动文件。检查此网站的格式:https://developer.android.com/reference/android/widget/Button.html

    我想我做了一些愚蠢的问题,但我不确定它们是什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-31
      • 1970-01-01
      • 2019-10-23
      • 1970-01-01
      相关资源
      最近更新 更多