2014-03-06 46 views
1

嗨我在我的沉浸式中在常規卡上創建菜單時遇到問題。這是我到目前爲止有:在Google Glass中顯示菜單

我有一個實現OnItemClickListener這樣的CardScrollAdapter:

私有類ExampleCardScrollAdapter擴展CardScrollAdapter實現OnItemClickListener {

@Override 
    public int findIdPosition(Object id) { 
     return -1; 
    } 

    @Override 
    public int findItemPosition(Object item) { 
     return mCards.indexOf(item); 
    } 

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

    @Override 
    public Object getItem(int position) { 
     return mCards.get(position); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

     View rowView = convertView; 
     ViewHolder holder; 

     if(rowView==null) { 
      rowView = mInflater.inflate(R.layout.card_layout, null); 
      holder = new ViewHolder(); 
      holder.mainText = (TextView) rowView.findViewById(R.id.tvMainText); 
      holder.fullImage = (ImageView) rowView.findViewById(R.id.fullImage); 
      holder.image1=(ImageView) rowView.findViewById(R.id.ivImage1); 
      holder.image2 = (ImageView) rowView.findViewById(R.id.ivImage2); 
      holder.image3 = (ImageView) rowView.findViewById(R.id.ivImage3); 
      holder.llImages = (LinearLayout) rowView.findViewById(R.id.llImages); 
      holder.llSecondaryImages = (LinearLayout) rowView.findViewById(R.id.llSecondaryImages); 
      rowView.setTag(holder); 
     } else holder = (ViewHolder) convertView.getTag(); 

     CustomCard myObject = (CustomCard) getItem(position); 

     if (myObject.getCompanyInfo()!=null) { 

      System.out.println(myObject.getImageURL()); 
      System.out.println(myObject.getCompanyInfo()); 

      holder.mainText.setText(myObject.getCompanyInfo()); 
      imageLoader.DisplayImage(myObject.getImageURL(), holder.image1); 

      holder.mainText.setVisibility(ImageView.VISIBLE); 
      holder.llImages.setVisibility(ImageView.VISIBLE); 
      holder.image1.setVisibility(ImageView.VISIBLE); 

     } else { 
      imageLoader.DisplayImage(myObject.getImageURL(), holder.fullImage); 
      holder.llImages.setVisibility(ImageView.VISIBLE); 
      holder.fullImage.setVisibility(ImageView.VISIBLE); 
     } 

     holder.image2.setVisibility(ImageView.GONE); 
     holder.image3.setVisibility(ImageView.GONE); 
     holder.llSecondaryImages.setVisibility(ImageView.GONE); 

     return rowView; 
    } 

    public class ViewHolder { 
     public TextView mainText; 
     public ImageView fullImage; 
     public ImageView image1; 
     public ImageView image2; 
     public ImageView image3; 
     public LinearLayout llImages; 
     public LinearLayout llSecondaryImages; 
    } 

    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     System.out.println("Click" + position); 
     onCreateOptionsMenu(null); 

    } 

} 

當我點擊我的卡它打印「點擊「和卡的位置,以便工作。

之後,我想運行,看起來像這樣的onCreateOptionsMenu:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.card_menu, menu); 
    return true; 
} 

我有是瞭解如何使onCreateOptionsMenu運行的問題? 什麼是菜單菜單,我必須從onItemClick方法提供它而不是null?

//喬金 -

回答

1

僅供參考我最終做出這樣的:

我實現了一個單獨的活動:

public class MenuActivity extends Activity { 

@Override 
public void onAttachedToWindow() { 
    super.onAttachedToWindow(); 
    openOptionsMenu(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.card_menu, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle item selection. 
    switch (item.getItemId()) { 
     case R.id.navigate: 
      System.out.println("Click"); 
      return true; 
     default: 
      return super.onOptionsItemSelected(item); 
    } 
} 

@Override 
public void onOptionsMenuClosed(Menu menu) { 
    // Nothing else to do, closing the activity. 
    finish(); 
} 

}

然後我創建的意圖:

checklistIntent = new Intent(MainActivity.this, MenuActivity.class); 

並在我的OnItemClick我只做:

public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     startActivity(checklistIntent);   
    } 

所有其他的東西都和以前一樣。

希望這可以幫助未來的人。

1

你必須定義onOptionsItemSelected(菜單項項),這是點擊菜單時運行。作爲參考,您可以看到定義爲here的菜單項。

2

對於這種情況,您不需要單獨的活動 - 只有當您需要顯示活卡中的菜單時,才應該這樣做。

錯誤出現在您原來的onItemClick方法中:您應該調用openOptionsMenu來顯示菜單,而不是onCreateOptionsMenu