2017-06-21 70 views
0

我有一個藍牙閱讀例程,它給了我一個字符串,我想「打印」到一個片段的文本視圖。該字符串是實時更新的,所以它不應該是一次性事件。字符串從活動到片段的文本視圖

有趣的是,我可以將Activity中的TextView文本傳遞給片段的TextView。然後我把字符串放到Activity TextView中,然後從Activity TextView移動到Fragment Textview。

活動Textview是0dpx0dp,所以沒有人會看到它。

如何將字符串從MainActivity直接傳遞給Fragment的TextView?

這是在活動:

 textAmanheceMenos.setText(dadosTratadosB); 

這是片段:

 TextAmanheceMenos = (TextView) getActivity().findViewById(R.id.textAmanheceMenos); 

     String MSG = TextAmanheceMenos.getText().toString(); 
     TextAmanheceEm.setText(MSG); 

編輯:這是工作。但是我必須在活動中創建這個鬼影文本視圖。必須消除活動中​​的「textAmanheceMenos」文本視圖。字符串「dadosTratadosB」必須直接進入「TextAmanheceEm.setText(dadosTratadosB)」。但那不行。它說:「不能解析符號」

即使我創建:

DadosTratadosB = getActivity().findViewById(dadosTratadosB); 

我怎麼可能使它工作的傢伙?

謝謝!

回答

0

要從活動將數據發送到片段使用:

在你的片段
Bundle bundle = new Bundle(); 
bundle.putString("KEY", "STRING to send"); 
// set Fragmentclass Arguments 
Fragmentclass fragobj = new Fragmentclass(); 
fragobj.setArguments(bundle); 

然後

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
     Bundle savedInstanceState) { 
    String recivedString = getArguments().getString("KEY"); 
    //Do whatever you want with this string 
    return inflater.inflate(R.layout.fragment, container, false); 
} 
+0

由於設置上TextView!那些片段類參數是什麼?片段已經在其他地方啓動。 什麼是「鑰匙」。任何字符串變量? –

+0

KEY將是你的變量,你可以傳遞任何你想要的東西,只要記住你必須使用相同的密鑰,當你將檢索到你的片段中的數據 – sumit

0

我假設你的片段連接到你的活動,你需要發送短信到您的片段多次而不重新創建/重新附加片段。您可以使用本地廣播接收片段中的短信:https://developer.android.com/reference/android/support/v4/content/LocalBroadcastManager.html

或者,查看EventBus庫:https://github.com/greenrobot/EventBus它更易於使用且更靈活。您可以從應用程序的任何部分發送消息,並添加子控件以在其他地方接收消息。

[編輯]如果你想設置的片段文字只有一次,你可以通過你的文字作爲參數,因爲它上面答案是那樣,那麼你的片段將包含文本,你已經來過

+0

我想要的就是你說的。多次發送文本片段而不重新創建或重新附加它。 這是一個插件庫?它不在Android Studio上嗎? –

+0

看看github上的readme並查看他們的示例。 – user1209216

0

創建一個Intent到傳遞數據。請參見下面的代碼here

嘗試從Activity傳遞值,其中實際數據來

private void forwardActivityResult(Fragment f, int requestCode, int resultCode, Intent data) { 
    if (f != null) { 
      f.onActivityResult(requestCode, resultCode, data);    
     } 
    } 
} 

裏面fragment你可以從Intent data獲得價值和使用data.getStringExtra

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     Log.d(TAG, "onActivityResult"); 
     super.onActivityResult(requestCode, resultCode, data); 

    } 
相關問題