对TabActivity的NFC意图启动了一项新活动,而不是刷新现有活动

时间:2012-09-11 22:28:36

标签: android refresh nfc tabactivity android-pendingintent

my old question关闭后,我现在再次尝试考虑你给我的建议......

我有一个Android-Test-App,我希望只要用NFC读取某些内容(即使用RFID芯片)就可以将文本更改为TextView。

问题是我使用TextView的活动位于TabHost的Tab中。当NFC正在读取某些内容时,Activity将在前台启动,而TextView不会更改。 我想要的是只有TextView发生变化,其他一切都保持不变......

这是我的代码:

我的TabActivity:

public class NfcTabsActivity extends TabActivity {

    private NfcAdapter nfc;
    private PendingIntent nfcintent;
    private String[][] nfctechfilter = new String[][] { new String[] { NfcA.class.getName() } };

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

        TabHost tabHost = getTabHost();

        Intent intent = new Intent().setClass(this, NfcTest.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

        TabSpec spec = tabHost.newTabSpec("nfctab").setIndicator("NFC").setContent(intent);
        tabHost.addTab(spec);

        nfc = NfcAdapter.getDefaultAdapter(this);

            // PendingIntent using the NfcTest-Activity to receive the Intent. (Am I doing this correctly??)
        nfcintent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0);
    }

    // Start looking for NFC when activity is started/resumed.
    @Override
    protected void onResume() {
        super.onResume();
        nfc.enableForegroundDispatch(this, nfcintent, null, nfctechfilter);
    }

    // Disable NFC when leaving activity
    @Override
    protected void onPause() {
        super.onPause();
        nfc.disableForegroundDispatch(this);
    }
}

以及我的NfcTest活动应该在使用NFC时收到意图:

public class NfcTest extends Activity {

    private TextView status;

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

        setContentView(R.layout.nfctest);

        status = (TextView) findViewById(R.id.textView2);

    }

    @Override
    public void onNewIntent(Intent intent) {

        status.setText("RFID detected...");

    }
}

感谢 NFC人,以获取将PendingIntent放入TabActivity的建议! 不幸的是 - 正如我在另一个帖子中说的那样 - 对我来说也不起作用...... :(也许我的代码中出错了?

这是我的 AndroidManifest.xml 中的活动定义:

        [...]
        <activity android:name=".NfcTest" android:clearTaskOnLaunch="true" android:alwaysRetainTaskState="true" android:finishOnTaskLaunch="true"></activity>
        [...]

任何人都可以帮我解决这个问题吗? 也许你是NFC人?也许我只是对你的想法有所不妥,或者在我的代码中混淆了什么......? :/

1 个答案:

答案 0 :(得分:0)

试试这个

        Intent intent = new Intent().setClass(this, NfcTest.class);

    TabSpec spec = tabHost.newTabSpec("nfctab").setIndicator("NFC").setContent(intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
    tabHost.addTab(spec);