簡體   English   中英

如何在導航抽屜中的片段中使用活動

[英]How to use Activities within fragments in Navigation Drawer

我在片段中使用活動時遇到問題。

我有兩個活動,活動之一將使用意圖將數據發送到兩個。

活動1基本上是nfc掃描部分,並且使用意圖發送標簽信息,活動2將接收並顯示該信息。

我試圖將活動分成多個片段,並與導航抽屜UI一起使用。

我該如何實現?

活動1代碼:

 public class Activity2 extends Activity {

private NfcAdapter mAdapter;
private PendingIntent mPendingIntent;
private IntentFilter[] mFilters;
private String[][] mTechLists;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);
    mAdapter = NfcAdapter.getDefaultAdapter(this);        
    mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);        
    mFilters = null;
    mTechLists = null;  

    Intent intent = getIntent();       
    String action = intent.getAction();
    if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(action)) 
    {             
       onNewIntent(intent);
    }

}

@Override
protected void onResume() {
    super.onResume();

    mAdapter.enableForegroundDispatch(this, mPendingIntent, mFilters, mTechLists);

}

@Override
public void onPause() {
    super.onPause();

    mAdapter.disableForegroundDispatch(this);
}


@Override
public void onNewIntent(Intent intent) {
    Log.i("Foreground dispatch", "Discovered tag with intent: " + intent);

    Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);                

    startnfcread(tag);
}

private void startnfcread(Tag tag){
    try {

        NfcV nfcv = NfcV.get(tag);
        if(nfcv != null){

            nfcv.connect();
            Intent newActivity = new Intent(this, Activity2.class);
            newActivity.putExtra("TagID", tag.getId()); 

    startActivity(newActivity);

            nfcv.close();
        }

    } catch (Exception e) {
        Log.e("NFC error", e.toString());
        Toast.makeText(this, "NFC failed", Toast.LENGTH_SHORT).show();
    }    
    }

活動2:

public class Activity2 extends Activity {

 private String displayID = "";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);     

    setContentView(R.layout.results);

    TextView resultIdView = (TextView) findViewById(R.id.Tag_id);

    Bundle extras = getIntent().getExtras();        
    if(extras !=null)
    {
        byte[] TagID = extras.getByteArray("TagID");
        displayID = toHex(TagID);

        resultIdView.setText(displayID);                
    }
}   
}

我已從http://www.androidhive.info/2013/11/android-sliding-menu-using-navigation-drawer/中獲取了導航抽屜示例。

有一個主要的抽屜活動和不同的片段,我如何將這些片段用於活動。 當我從活動1掃描nfc標簽時,它將標簽ID發送到活動2並顯示標簽ID。

具有相同概念的片段如何使用,例如來自fragment1掃描標簽,並在片段2中顯示標簽id。

庫馬爾

您應該閱讀一些有關如何處理片段的基本文檔指南 片段的生命周期回調與活動非常相似,因此您應該能夠根據其復雜性快速轉換代碼。

簡要地。 創建一個將作為片段的容器的服務器的活動(只是具有一些簡單布局的基本活動)。 然后在該活動中使用FragmentManager將片段添加到其中。 您可以動態添加或刪除片段,也可以僅顯示/隱藏片段,這完全取決於您。 Google提供了一些不錯的示例和指南,可以幫助您入門。 片段之間的通信可以再次使用Intents(請參見getArguments() ),自定義接口來完成,您可以使用事件總線(請參見Otto),...我將從Intents開始。

您可以將Bundle傳遞給片段。

Bundle b = new Bundle();
b.putExtra("TagID", tag.getId());
FragmentVedioView fv = new FragmentVedioView();
fv.setArguments(b);
SFM.beginTransaction().replace(id, fv, "FragmentVedioView").commit();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM