2017-02-04 50 views
-2

我有2个片段: 片段A片段BAsyncTask on post execute

下面是相应的代码:

card1 = (CardView) rootView.findViewById(R.id.cardviewone); 
     card1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
      card1.setClickable(false); 
      new myAsyncTask(chkprog) { 
      @Override 
      public void onPostExecute(Void aVoid) { 
      a.setText(R.string.string1); 
      } 
    }.execute(); 
    } 
}); 

如何取消对后执行再打片段

片段,当用户点击卡片视图下执行一个一个异步任务A,如果用户切换到片段B,并防止应用程序崩溃?

+0

现在该应用是否会崩溃吗?并发布两个AsyncTask的代码 – OBX

+0

我想要一个简单的条件添加onPostExecute,例如:如果layout = layout或fragment = fragment执行代码,否则什么也不要做 – rodoboss

+0

post ur crash log – rafsanahmad007

回答

0

只需检查您的片段,如果片段在回调之前对用户可见。

像这样的事情

@Override 
public void onPostExecute (Void aVoid){ 
    if (FragmentA.this.isVisible()) { 
     a.setText(R.string.string1); 
    } 
} 
+0

查看rootView = inflater.inflate (R.layout.layout1,container,false); card1 =(CardView)rootView.findViewById(R.id.card1);是否有可能检测视图是否可见而不是片段? – rodoboss

+0

视图将会显示,它具有不同的生命周期。上面的帮助? –

+0

公共类Fragmenta延伸片段{ \t ... \t \t 如果(Fragmenta.isVisible())< - 无静态方法是可见的()不能从静态上下文 { } \t 引用} – rodoboss