2012-08-11 4 views
0

를 호출되지 않습니다 1 활동의 코드입니다 :onActivityResult를 여기

package com.android.shopping; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.ListView; 
import android.widget.TextView; 

public class MainActivity extends Activity implements OnClickListener{ 

    Button btn; 
    ListView lista; 
    TextView tekst; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     btn=(Button) findViewById(R.id.button1); 
     lista=(ListView) findViewById(R.id.listView1); 
     btn.setOnClickListener(this); 
     tekst=(TextView) findViewById(R.id.textView1); 
    } 

    @Override 
    public void onClick(View v) { 
     Intent i=new Intent(this, DetailsActivity.class); 
     startActivityForResult(i, RESULT_OK); 

    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(resultCode==RESULT_OK){ 
     String item=data.getStringExtra("data").toString(); 
     tekst.setText(item.toString()); 
    } 

    } 
    } 

그리고 두 번째 :

package com.android.shopping; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 

public class DetailsActivity extends Activity implements OnClickListener{ 
    Button save; 
    EditText details; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_details); 
     save=(Button) findViewById(R.id.button1); 
     details=(EditText) findViewById(R.id.editText1); 
     save.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     Intent in=new Intent(); 
     in.putExtra("data", details.getText().toString()); 
     setResult(RESULT_OK, in); 
     finish(); 

    } 


} 

는 그래서 버튼으로 첫 활동에 나는 두 번째 활동을 호출. 사용자가 텍스트 필드에 무엇인가 입력하고 버튼을 클릭하면 첫 번째 활동으로 되돌아갑니다. 그리고 입력 한 텍스트가 첫 번째 활동에서 textView에 표시되어야하지만 그렇지 않습니다. 제발 도와주세요.

+0

다른 사람들이 유용하다고 생각하는 답변을 수락해야합니다. –

답변

0

코드가 setResult() 및 finish()를 지나가셨습니까?

onActivityResult()은 새로운 활동에서 startActivityForResult(<new_activity_context>)setResult()을 호출 할 때 호출됩니다.

또한 Manifestandroid:launchMode="singleInstance"이 없도록 할 수 있습니까? 당신의 MainActivity 클래스에서

1

, 당신은 당신이 시작하는 라인을 변경해야합니다 DetailsActivity

에 '에 startActivityForResult (I, 1);'

실제 값이 -1 인 RESULT_OK을 사용하면 안됩니다. SDH 문서에서 두 번째 매개 변수로 음수 값을 사용하면 startActivityForResult은 단순히 startActivity으로 처리됩니다. 그래서 DetailsActivity의 결과를 얻을 수 없습니다.

그런데 두 번째 매개 변수는 request_code입니다. 나는 request_code와 result_code를 동일하게 만드는 것이 좋은 생각이라고 생각하지 않는다.

+0

+1 잘 조사했습니다! –

+0

그 덕분에, 고마워. – user1477107

+0

@ user1477107 안녕하세요, 아마도이 사이트의 새로운 재능자입니다. 내 대답을 찾으면 문제가 해결됩니다. 내 대답을 수락 할 수있는 "진드기"를 줄 수 있습니다. 이것은 더 많은 사람들이 미래에 당신을 도울 것을 권장합니다. – Huang