簡體   English   中英

intent.getextra()接收到null並且intent.hasextra()在第二個活動中不起作用

[英]intent.getextra() is receiving null and intent.hasextra() is not working in the second activity

我試圖使用意圖將數據連續發送到另一個活動。

在第一個活動中

MainActivity.java

class sender extends AsyncTask <void, void, void>
{       
   @Override
   protected Void doInBackground(Void... params) {
   {
      while(true)
      {
           if(!intent.hasextra())
           {
                String data = dataBuffer;
                intent.putextra(EXTRA_MESSAGE,data);  
           }
       }
   }
    @Override
    protected void onPreExecute() {
         //  intent.putextra(EXTRA_MESSAGE,"Test data"); --> This is working 
         startActivityForResult(intent, 333);

    }

}

SecondActivity.java

class receiver extends AyncTask <void, void, void>
{
    while(true)
    {
         if(intent.hasextra())
          {
             resultString = intent.getextra(MainActivity.EXTRA_MESSAGE);
             mHandler.obtainMessage(MESSAGE_READ,resultString 
                                             ).sendToTarget();
             intent.removExtra(MainActivity.EXTRA_MESSAGE);
          }
    }
}

調試時,兩個線程都在執行,但是while(true)內部的if條件不滿足。

注意:在StartActivityForResult()之前,putExtra正在發送數據,並且在secondActivity中我可以接收數據。

請告訴我為什么在doInbackground()中都不會發送和接收數據。

調試時,兩個線程都在執行,但是while(true)內部的if條件不滿足。

查看您發布的代碼,這是因為您的兩個AsyncTask正在同時運行,因此在接收Asynctask進入doInBackground()它沒有找到Intent值。 您最好要延遲第二個AsyncTask的執行。

另一方面,我強烈建議您更改方法,因為這將來會導致很多問題。 在兩個活動之間還有其他更好的通信方式。

暫無
暫無

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

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