3

Я использую TabWidget, Tab осуществляются таким же образом, который показывает в tutorial

"MainActivity -> Activity1 -> деятельности2 (данное изображение)"

view for the current activity

щелкнув на блесны дает

android.view.WindowManager$BadTokenException: Unable to add window -- token [email protected] is not valid; is your activity running? 

Я попытался Android Spinner Error : android.view.WindowManager$BadTokenException: Unable to add window уже но что д oesn't помочь мне

Я знаю Существует что-то не так с контекстом, но я не могу понять, что

Услышь мой Intent, который начинается DetailActivity

intent = new Intent(getParent(), DetailActivity.class); 
TabGroupActivity parentActivity = (TabGroupActivity)getParent(); 
parentActivity.startChildActivity("SelectActivity", intent); 

Мой код для DetailActivity приведены ниже

@Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.package_detail); 
     setUpViews(); 

     id = getIntent().getExtras().getInt("WEBSITE_ID"); 

     adapter = new KeywordAdapter(getApplicationContext(), id, 
       getLNApplication().getKeyworddetail()); 
     listTags.setAdapter(adapter); 

     spinneAdapter = new SpinnerListAdapter(); 
     spinnerList.setAdapter(spinneAdapter); 
     spinnerList.setSelection(id, true); 
     spinnerList 
       .setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
        public void onItemSelected(AdapterView<?> parent, 
          View view, int position, long id) { 

         // txtHeader.setText(getLNApplication().getWebsiteList() 
         // .get(position).getName()); 
         adapter.forceReload(); 
         adapter = new KeywordAdapter(DetailActivity.this, 
           position, getLNApplication().getKeyworddetail()); 
         listTags.setAdapter(adapter); 
        } 

        public void onNothingSelected(AdapterView<?> parent) { 

        } 
       }); 

    } 

код для SpinnerAdapter

public class SpinnerListAdapter extends BaseAdapter { 

     private List<ClientDetail> siteList; 

     public SpinnerListAdapter() { 
      siteList = getLNApplication().getWebsiteList(); 
     } 

     public void forceReload() { 
      notifyDataSetChanged(); 

     } 

     @Override 
     public int getCount() { 
      return siteList.size(); 
     } 

     @Override 
     public Object getItem(int position) { 
      // TODO Auto-generated method stub 
      return siteList.get(position); 
     } 

     @Override 
     public long getItemId(int position) { 
      return position; 
     } 
     @Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      View view = convertView; 

//   LayoutInflater inflater = (LayoutInflater) context 
//    .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

//   LayoutInflater inflater = getLayoutInflater(); 

//   LayoutInflater inflater = LayoutInflater.from(DetailActivity.this.getParent()); 

      LayoutInflater inflater = LayoutInflater.from(DetailActivity.this.getParent()); 
       view = inflater.inflate(R.layout.spinner_item_display, null); 
       TextView websiteName = (TextView) view.findViewById(R.id.spinnerItem); 
      if (siteList.get(position).getName() != null) { 
       websiteName.setText(siteList.get(position).getName()); 
       websiteName.setTextColor(0xFF000000); 
      } 
      return view; 
     } 

     @Override 
     public View getDropDownView(int position, View convertView, ViewGroup parent) { 
      View view = convertView; 

//   LayoutInflater inflater = (LayoutInflater) context 
//     .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

//   LayoutInflater inflater = getLayoutInflater(); 

//   LayoutInflater inflater = LayoutInflater.from(DetailActivity.this.getParent()); 

      LayoutInflater inflater = LayoutInflater.from(DetailActivity.this.getParent()); 
       view = inflater.inflate(R.layout.spinner_dropdown_display, null); 
       TextView websiteName = (TextView) view.findViewById(R.id.spinnerDropDownItem); 
      if (siteList.get(position).getName() != null) { 
       websiteName.setText(siteList.get(position).getName()); 
       websiteName.setTextColor(0xFF000000); 
      } 
      return view; 
     } 
    } 

Я делаю что-то неправильно?

, пожалуйста, помогите мне ... Спасибо большое

ответ

1

проход

YourActivty.this.getParent() 

Context, как к Spinner.

Для получения дополнительной информации см here и here

+0

Я пытался, что и раньше, но это не сработало, поэтому я ставлю класс SpinnerListAdapter в том же классе и проходящее ничего в качестве параметра, где я нужно использовать контекст Я использую Class.this.getParent() искать LayoutInflater в классе SpinnerListAdapter –

+0

@ Adil вставить над строкой в ​​моем коде, но когда я нажимаю на spinner, то дает мне такую ​​же ошибку. – duggu

1

В Tab деятельности, если вы даете любой диалог предупреждения, то в этом случае вы установили контекст вкладки деятельности & не текущий объект деятельности.

вместо

adapter = new KeywordAdapter(getApplicationContext(),id,getLNApplication().getKeyworddetail()); 
listTags.setAdapter(adapter); 

использовать следующие

adapter = new KeywordAdapter(Tabs.ctx,id,getLNApplication().getKeyworddetail()); 
listTags.setAdapter(adapter); 

где Tabs.ctx является контекст вкладки деятельности &, которая является статической переменной.

+0

это адаптер для адаптера с прядильным списком listviewAdapter –

+1

, если вы создаете спиннер динамически @ на этот раз Spinner spinner = new Spinner (Tabs.ctx); – Sumant

+0

Tabs.ctx означает ActivityClass.это или что-то еще –

0

В TabWidget также с помощью этого кода вы можете решить эту ошибку

View view = LayoutInflater.from(this.getParent()).inflate(R.layout.package_detail, null); 
this.setContentView(view);