完成()第一次没有关闭当前活动

问题描述:

我试图开发一个应用程序,它有两个活动,它们将数据发送给对方。问题是我想finish();第二个活动。当我点击我在XML_ SecondActivity中定义的goBackButton_时,当我再次单击该按钮时,它会根据需要返回到MainActivity。为什么?以及如何解决它?为什么它不能在第一时间工作?完成()第一次没有关闭当前活动

public class MainActivity extends AppCompatActivity { 
Button button; 
int REQUEST_CODE = 1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    button = (Button) findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(MainActivity.this,SecondActivity.class); 
      intent.putExtra("FirstActivity", "Hello from first activity"); 
      startActivity(intent); 

      startActivityForResult(intent, REQUEST_CODE); 
      Log.d("TAG", "onClickListener: done!"); 
     } 
    }); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    //super.onActivityResult(requestCode, resultCode, data); 
    Log.d("TAG", "onActivityResult: Entered"); 
    if(requestCode == REQUEST_CODE) { 
     Log.d("TAG", "onActivityResult: requestCode is OK"); 
     if (resultCode == RESULT_OK) { 
      Log.d("TAG", "onActivityResult: result is returned OK"); 
      String result = data.getStringExtra("SecondActivity"); 
      Toast.makeText(this, result, Toast.LENGTH_LONG).show(); 
      Log.d("TAG", "onActivityResult: done!"); 
     } 
    } 






} 

}

public class SecondActivity extends AppCompatActivity { 
TextView textView; 
Button goBackButton; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_second); 
    goBackButton = (Button) findViewById(R.id.goBackButton); 
    goBackButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Log.d("TAG", "onClick: Entered"); 
      Intent returnIntent = getIntent(); 
      returnIntent.putExtra("SecondActivity", "from second Activity"); 
      setResult(RESULT_OK, returnIntent); 
      Log.d("TAG", "onClick: Message sent"); 
      finish(); 
      Log.d("TAG", "onClick: Activity finished"); 
      //Intent myIntent = new Intent(SecondActivity.this,MainActivity.class); 
      //startActivity(myIntent); 

     } 
    }); 
    textView = (TextView)findViewById(R.id.textView); 
    Bundle extras = getIntent().getExtras(); 
    if(extras != null){ 
     String string = extras.getString("FirstActivity"); 
     textView.setText(string); 
    } 






} 

}

+0

remove startActivity(intent); –

+0

它的工作,你能解释原因,为什么发生? –

+0

你调用两个startActivity(intent);.活动要求两次。 –

的问题是在你的代码 -

startActivity(intent); 

startActivityForResult(intent, REQUEST_CODE); 

当你想要做startActivityForResult你不必做startActivity因为这将首先打开你的第二个活动,而寻找的结果。

删除startActivity(intent);

尝试除去startActivity(意向);

button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent intent = new Intent(MainActivity.this,SecondActivity.class); 
     intent.putExtra("FirstActivity", "Hello from first activity"); 
     startActivityForResult(intent, REQUEST_CODE); 
     Log.d("TAG", "onClickListener: done!"); 
    } 
}); 

已添加startActivity(intent)以及startActivityforResult(intent, REQUEST_CODE)其创建活动中使用的双实例只startActivityforResult(intent, REQUEST_CODE);