2013-05-20 65 views
1

我已經閱讀了一堆帖子,文章和一切,但我無法得到解決方案.. 我做了一個Android應用程序.. 我開始第一個活動(第一類)。然後我對第二個活動的按鈕,我加載它是這樣的:來自其他活動的Android調用方法

firstactivity f1= new firstactivity(); 
f1.MyMethod("my string goes here") 

Intent i=new Intent(firstactivity.this,secondactivity.class); 
startActivity(i); 
在點擊事件按鈕我想打電話從第一個活動一個方法的第二個活動

當我運行這個應用程序崩潰..我試圖趕上exeption和我打印exeption這是一個錯誤爲null ...我不能得到它的工作.....

在此先感謝!

PS有什麼辦法可以在第一個活動的佈局中啓動第二個活動並更新一些值(在textview中)嗎?不是隻在加載時更新它,而是在第二個活動和每個活動中都有一個計時器5秒在第一活動..任何解決方案的佈局的setText到一個TextView(非此即彼我問大約高於法),將不勝感激

+0

我建議看一下開始第二個活動時用extras調用'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)); 

一定的意圖添加到android.xml

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

,那麼你應該能夠播放/發送意圖到活動

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

hi ,非常感謝你。請你向我解釋這是如何工作的?再次感謝 PS PS如何將數據返回給一個? – Chris

+0

嗨again.so如果我使用「或」(聽衆),我會修復代碼到我的第一個活動..第二個活動,我會把代碼 意圖我=新的意圖(這,MainActivity。類); (); //去上一個INtent startActivity(i); //只會觸發MainActivity中的Mymethod 這將調用MyMethod()的第一個activity? – Chris

0

我覺得你的方法不好。你想在第一個Activity中運行什麼樣的方法?如果你的Activity目前沒有被用戶使用,那麼這樣做有什麼意義?

你應該做的就是定義你的行動作爲第一ActivityonResume()方法的一部分,並把他們的方法/ s的要運行,以下只是PAS從你BundleExtraActivity到首先確定應該採取什麼行動。

+0

嗨。第一項活動打開藍牙並連接到其他藍牙設備,並將命令發送至連接的設備。 第二活性/類是用於獲取傾斜數據(電話軸值)和其像這樣: 公共類二等延伸活動實現SensorEventListener ............ 因此第二類我想要發送到第一類的事件的電話是傾斜(其完成)的3軸的數據... – Chris

0

創建一個接口,在第一個活動中實現該接口,然後從第二個活動調用實例化的方法。

在開始第二個活動時,您可以在意圖中傳遞實例化的接口對象。

+0

這怎麼能工作?您應該傳遞實現接口的Activity,但Activity不是Serializable ... –