方法调用未执行

时间:2011-07-25 19:38:19

标签: android

我有一个名为Activity A的Android Activity,如下所示。当我单击saveButton时,将调用saveData()方法,然后调用finish()方法并关闭Activity A.当我单击Activity A中的triggerActivity_B按钮转到Activity B然后单击triggerActivity_A按钮时在Activity B中返回Activity A,我点击saveButton并且不调用saveData()方法,只调用finish()方法。它似乎只在我不离开Activity时执行,我不知道为什么会这样。

非常感谢您的帮助。

ActivityA.java

public class ActivityA extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        saveButton.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                saveData();
                finish();
            }
        });

        triggerActivity_B.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent i = new Intent(ActivityA.this, ActivityB.class);
                startActivity(i);
                finish();
            }
        });
    }

    private void saveData() {
        String desc = descriptionEntry.getText().toString();

       if (mRowId == null) {
           long id = mDbHelper2.createDescription(desc);
           if (id > 0) {
               mRowId = id;
           }
       } else {
           mDbHelper2.updateDescription(mRowId, desc);
       }
    }
}

ActivityB.java

public class ActivityB extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        triggerActivity_A.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent i = new Intent(ActivityB.this, ActivityA.class);
                startActivity(i);
                finish();
            }
        });
    }
}

1 个答案:

答案 0 :(得分:0)

要点是,如果单击ActivityB中的triggerActivity_A按钮,则会生成一个新的ActivityA实例;它不会回到你的第一个ActivityA,因此可能没有什么可以保存。

另请注意,当您按下按钮以打开ActivityB时,您的第一个activityA会占用,因为您调用的是finish()。如果你想保持第一个ActivityA不调用finish(),并且在按下ActivityB中的按钮时不启动新活动,只需调用finish()。

没有理由假设没有调用saveData()。

请提高你的接受度。