繁体   English   中英

Android:onActivityResult不起作用

[英]Android: onActivityResult is not working

我的代码有问题,我不知道背后的原因是什么。 我正在尝试从第二个活动更新主要活动中的textview。 我试图将textview设为公开静态,但无法更新。 我也尝试使用意图与onActivityResult方法,但没有结果。 这是我的主要活动Java代码

.....
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == 1) {
            if(resultCode == RESULT_OK){
                String income = data.getStringExtra("X");
                TextView tvView = (TextView) findViewById(R.id.MainIncome);
                tvView.setText(income);
                Toast.makeText(getBaseContext(), "Income Added", Toast.LENGTH_SHORT).show();
            }
            if (resultCode == RESULT_CANCELED) {
                Toast.makeText(getBaseContext(), "Cant Add Income, Something Went Wrong!", Toast.LENGTH_SHORT).show();
            }
        }
      }
....

这是XML文件

....
    <TextView
                    android:id="@+id/textView11"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Current Income: " />

     <TextView
                    android:id="@+id/MainIncome"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="0" />
....

这是我的第二个活动java代码

    ....
  public void Add_Income(View v) {
        EditText IncomePayee = (EditText) findViewById(R.id.IncomePayee);
        EditText IncomeAmount = (EditText) findViewById(R.id.IncomeAmount);

        IPayee = IncomePayee.getText().toString();
        IAmount = Double.parseDouble(IncomeAmount.getText().toString());

        IAmount += GlobalVariables.TotIncome;

        Intent intent = new Intent();
        intent.putExtra("X", Double.toString(IAmount));
        setResult(RESULT_OK, intent);
        finish();
  }
....

这是XML文件

....
 <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="80dp"
        android:text="Income Amount"
        android:textAppearance="?android:attr/textAppearanceMedium" />

<EditText
        android:id="@+id/IncomePayee"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="175dp"
        android:ems="10"
        android:inputType="textPersonName" />

<Button
        android:id="@+id/AddIncomeButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="380dp"
        android:layout_centerHorizontal="true"
        android:onClick="Add_Income"
        android:text="Add Income" />
....

最后一点。 我不确定使用intent是否是更改文本视图的正确方法,因为我确实有多个活动可以从主要活动中享用。

在启动新活动时您是否调用了startActivityForResult(意图意图,int requestCode)还是仅使用startActivity(意图意图) 为了接收结果,您应该调用startActivityForResult方法。

首先:

    Intent intent = new Intent();
    intent.putExtra("X", Double.toString(IAmount));
    setResult(RESULT_OK, intent);

定义意图:

    Intent intent = new Intent(getApplicationContext(),toActivity.class);

接着

    startActivityForResult(intent);

之后,当您从活动中回来时,您的onActivityResult()代码将运行。

根据您的意图,您未指定应进入的课程。

在您的Add_Income方法中:

Intent intent = new Intent(this, <Put your destination class>.class);
intent.putExtra("X", Double.toString(IAmount));
setResult(RESULT_OK, intent);
startActivity(intent);
finish();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM