0
我想在應用程序菜單中點擊一個新卡片「set」。目前,它重新打開同一套牌。我希望打開一個新的時間表,並在每次向後滑動時回到我的列表中。請幫我解決這個問題。Google Glass:新卡套裝oncklick
public class MainActivity extends Activity implements OnItemClickListener{
// Define tag for debugging
private static final String TAG = "MyActivity";
//infocards
private List<CardBuilder> iCards;
// List of cards
private List<Card> mCards;
// ScrollView for holding cards
private CardScrollView mCardScrollView;
// Current card selected
private int currentCard = -1;
private List<StepsToCheck> mTaskList;
private ExampleCardScrollAdapter mAdapter;
private ExampleCardScrollAdapter adapter;
private CardScrollView iCardScrollView;
private ExampleCardScrollAdapter iAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create the cards
createCards();
// Instantiate and set
mCardScrollView = new CardScrollView(this);
adapter = new ExampleCardScrollAdapter();
mCardScrollView.setAdapter(adapter);
mCardScrollView.setOnItemClickListener(this);
mCardScrollView.activate();
// Set CardScrollView as content view
setContentView(mCardScrollView);
}
// Instantiate ToDoListManager and get list
private void createCards() {
mCards = new ArrayList<Card>();
CheckingStepManager listManager = new CheckingStepManager();
mTaskList = listManager.getToDoList();
Card card;
int sizeList = mTaskList.size();
// For all the cards
for (int i = 0 ; i < sizeList; i++) {
card = new Card(this);
card.setText(mTaskList.get(i).getTask());
// Set in the arrayList
mCards.add(card);
}
}
// Class to manage CardScrollView
private class ExampleCardScrollAdapter extends CardScrollAdapter {
@Override
public int getPosition(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 int getViewTypeCount() {
return CardBuilder.getViewTypeCount();
}
@Override
public int getItemViewType(int position){
return mCards.get(position).getItemViewType();
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return mCards.get(position).getView(convertView, parent);
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Create options from "/res/menu/main.xml"
getMenuInflater().inflate(R.menu.main, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
// Get id for detect what item was selected
int id = item.getItemId();
switch (id) {
case R.id.settings_1 : // Do something for setting 1
// Remove currentCard
mTaskList.remove(currentCard);
mCards.remove(currentCard); // Remove the current card selected from the list of Cards
adapter.notifyDataSetChanged(); // Notify the adapter that needs to update the data
break;
這是我的菜單中的setting2不起作用。
case R.id.settings_2 :
createInfoCards();
iCardScrollView = new CardScrollView(this);
iAdapter = new ExampleCardScrollAdapter();
iCardScrollView.setAdapter(iAdapter);
iCardScrollView.activate();
setContentView(iCardScrollView);
break;
}
return super.onOptionsItemSelected(item);
}
private void createInfoCards() {
iCards = new ArrayList<CardBuilder>();
iCards.add(new CardBuilder(this, CardBuilder.Layout.TITLE)
.addImage(R.drawable.image1)
.setText("Fuselage Map"));
iCards.add(new CardBuilder(this, CardBuilder.Layout.TEXT)
.setText(String.format(this.getResources().getString(R.string.app_name))));
}
@Override
public void onResume()
{
super.onResume();
adapter.notifyDataSetChanged();
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
// TODO Auto-generated method stub
// Set current Card for menu option handle
currentCard = position;
openOptionsMenu();
}
}
究竟發生了什麼?你是否調試過,是否進入第二種情況,還是根本沒有進入?你的代碼在某處出現錯誤嗎? – NoSixties
不,我沒有收到錯誤,它只是再次打開第一張「卡片組」,沒有菜單功能。但我想打開一個新的提到。你可以幫幫我嗎? –
請嘗試調試它,讓你知道到底發生了什麼。如果案件甚至觸發。 要能夠在Google眼鏡上進行調試,您需要添加android.os.Debug.waitForDebugger();到你的代碼。大部分時間我都把它放在了onCreate上。當您完成調試時,一定要再次拿出它 – NoSixties