2012-04-27 4 views
1

두 개의 간단한 응용 프로그램이 있으므로 두 개의 다른 패키지가 있다고 가정합니다. 각 패키지에는 응용 프로그램 아이콘을 클릭하여 실행할 수있는 Activity이 있습니다. 다음과 같이 두 가지 활동이 있다고 가정하자 : 우리는 MyFirstActivity 활동을 시작했습니다 org.secondexample.secondactivity 이미 시작된 특정 활동으로 데이터를 보내는 방법은 무엇입니까?

한다고 가정 패키지에있는 패키지 org.firstexample.firstactivity

  • MySecondActivity로입니다

    • MyFirstActivity를, 그래서 실행 중입니다. MySecondActivity 활동이 MyFirstActivity 활동으로 직접 데이터를 보낼 수 있습니까?

      서로 다른 패키지에있는 두 가지 활동이 데이터 교환을 통해 서로 통신 할 수 있기를 바랍니다.

  • 답변

    1

    당신이 MyFirstActivity에서 MySecondActivity를 실행하는 경우 다음이 방법을 사용하면 데이터를 전달하려면 한 OnCreate

    Intent intent25 = new Intent(Intent.ACTION_MAIN).addCategory(
    Intent.CATEGORY_LAUNCHER).setClassName("org.secondexample", 
    "org.secondexample.MySecondActivity").addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) 
    .addFlags(Intent.FLAG_FROM_BACKGROUND).setComponent(new ComponentName("rg.secondexample", 
    "org.secondexample.MySecondActivity")); 
    Bundle bundle = new Bundle(); 
    bundle.putString("Name", "test"); 
    intent25.putExtras(bundle); 
    getApplicationContext().startActivity(intent25); 
    

    및 MySecondActivity에()

    Bundle bundle = this.getIntent().getExtras(); 
    String name = bundle.getString("Name"); 
    
    +0

    좋아요 ... MySecondActivity의 리스너를 구현하여 MyFirstActivity 10 보내고 있지만,'경우 MySecondActivity'는 현재 실행중인? – enzom83

    +0

    당신이 안드로이드에서 아는 한 가지 활동은 한 번에 실행하는 것을 의미합니다. 활동이 실행 중이 아니면 onPouse 상태이거나 완료되었을 수 있습니다. –

    +0

    네 말이 맞다! 그리고 'MyFirstActivity' 대신 서비스가 있다면? 다시 말해, 활동 (실행 중)과 서비스 (활동을 재개하거나 파기하지 않고)를 서로주고받는 방법을 생각해보십시오. 서비스와 활동이있는 경우 – enzom83

    0

    : 활동 MyFirstActivity에서

    을 파괴 활동을 재개하지 않고 청취자를 만들어야합니다.

    public class MyFirstActivity extends Activity implements OnDataChanged { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.main); 
    
    } 
    
    @Override 
    public void onChange(int a) { 
        Log.e("", "a : " + a); 
    
    } 
    
    } 
    

    MySecondActivity.java

    public class MySecondActivity extends Activity { 
    
    private OnDataChanged mOnDataChanged; 
    
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
    
        sendData(10); 
    } 
    
    public interface OnDataChanged { 
        public void onChange(int a); 
    } 
    
    private void sendData(int a) { 
        mOnDataChanged.onChange(a); 
    } 
    
    } 
    

    MySecondActivity는

    관련 문제