2013-05-20 3 views
1

게시물, 기사 및 모든 것을 읽었지만 해결책을 얻을 수 없습니다. 나는 안드로이드 응용 프로그램을 만듭니다. 나는 첫 번째 활동 (일등석)을 시작합니다.다른 활동에서 안드로이드 전화 방법

firstactivity f1= new firstactivity(); 
f1.MyMethod("my string goes here") 
: 내가 첫 번째 활동에서 하나 개의 메소드를 호출 할 버튼에 클릭 이벤트의 두 번째 활동

Intent i=new Intent(firstactivity.this,secondactivity.class); 
startActivity(i); 

: 다음 나는 다음과 같이로드 두 번째 활동을위한 버튼이 있습니다

내가 이것을 실행할 때 응용 프로그램이 충돌합니다 .i 시도 잡아 예외를 시도하고 null에 대한 하나의 오류 인 exeption에 인쇄 ... 나는 작동하지 않습니다 .....

미리 감사드립니다!

PS에는 첫 번째 활동의 레이아웃에서 두 번째 활동을 시작하고 일부 값 (텍스트보기에서)을 업데이트하는 방법이 있습니까? 두 번째 활동과 모든 활동의 예를 들어 타이머가 있습니다. 제 활성 .. 모든 용액의 레이아웃 내의 텍스트 뷰에의 setText 5초 (중이 나 내가 방법에 대해 상기 요청)

하나를 통해 활성

간의 통신 인 텐트를 사용

+0

엑스트라로 두 번째 액티비티를 시작하고'i.putExtra()'를 호출하고'getIntent(). getExtras() '로 방금 시작한 액티비티에 값을 전달할 수 있습니다. – Eluvatar

답변

1

시도를 감상 할 수있다 onNewIntent :

@Override 
protected void onNewIntent(Intent intent) { 
    setIntent(intent); 
    handleIntent(intent); 
} 

private void handleIntent(Intent intent) { 
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) { 
     String query = intent.getStringExtra(SearchManager.QUERY); 
     if (query == null) { 
      query = intent.getData().toString(); 
     } 
     doMySearch(query); 
    } 
} 

또는 수신기를 사용하십시오.

class ActivityA implements Activity { 

    // Nested 'listener' 
    protected class TitleBarListener extends BroadcastReceiver { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      if (intent.getAction().equals(NEW_TITLE_INTENT)) 
      { 
       intent.getStringExtra(NEW_TITLE_TEXT_VALUE)); 
      } 
     } 
    } 

    TitleBarListener mListener; 

    // then create and register 
    mListener = new TitleBarListener(); 
    registerReceiver(mListener, new IntentFilter(NEW_TITLE_INTENT)); 

하면/방송

Intent i = new Intent(AccountMainView.NEW_TITLE_INTENT); 
    getActivity().sendBroadcast(i); 


    // or if you activity is singleTop and you're using the onNewIntent: 
    Intent i=new Intent(this,MainActivity.class); 
    i.putExtra("methodName","Mymethod");//goes to previous Intent 
    startActivity(i);//will trigger only Mymethod in MainActivity 
+0

안녕하세요. , 고마워. 고맙습니다. 제게 어떻게 작동하는지 설명해 주시겠습니까? 다시 한 번 감사드립니다. 추신 : activityb가 어떻게 데이터를? – Chris

+0

안녕 again.so "또는"(청취자) 사용하는 경우 내 첫 번째 활동 코드를 수정합니다 .. 두 번째 작업에 대한 코드를 넣을 것입니다 의도 i = 새로운 의도 (this, MainActivity.수업); i.putExtra ("methodName", "Mymethod"); // 이전 INTENT로 이동 startActivity (i); // MainActivity에서 Mymethod 만 트리거 함 그러면 첫 번째 활동의 MyMethod()가 호출됩니까? – Chris

0

내가 당신의 접근 방식이라고 생각하는 활동에 의도를 보낼 수 있어야 android.xml 다음

<intent-filter> 
    <action android:name="android.intent.action.SEARCH"/> 
    <action android:name="com.mypackage.changeTitle"/> 
</intent-filter> 

에 의도를 추가해야합니다 좋지 않아. 어떤 방법으로 첫 번째 Activity에서 실행하고 싶습니까? 현재 사용자가 Activity을 사용하고 있지 않다면 어떻게해야할까요?

당신이해야 할 것은 첫째 Activity 당신의 onResume() 방법의 일환으로 자신의 행동을 정의하고/다음 실행할이야 자신의 방법을 배치하는 것입니다 그에게 Activity 당신에서 불과 학부모 협의회 Bundle 또는 Extra초 첫 번째 조치는 취해야 할 조치를 결정합니다.

+0

안녕하세요. 첫 번째 활동은 블루투스를 열고 다른 블루투스 장치에 연결하고 연결된 장치에 명령을 보냅니다. 제 활성/클래스 (전화 축 값)가 기울기 데이터를 얻기위한 것이며 그것이 같은 공용 클래스 secondclass 연장 활동 ............ 그래서 제 SensorEventListener 클래스를 구현하는 I 전화의 이벤트에 첫 번째 클래스에 보내려면 (그 완료) 3 축의 데이터를 기울이기했다 ... – Chris

0

인터페이스를 만들고 첫 번째 작업에서 해당 인터페이스를 구현 한 다음 두 번째 작업에서 인스턴스화 된 메서드를 호출합니다.

두 번째 활동을 시작할 때 인 텐트에서 인스턴스화 된 인터페이스 개체를 전달할 수 있습니다.

+0

어떻게이 일할 수 있습니까 ?? 인터페이스를 구현하는 Activity를 전달해야하지만 Activity는 Serializable이 아니어야합니다 ... –

관련 문제