Java 从卡片滚动器启动单个活动的正确方法
我创建了一个glass应用程序,其中我有CardScroller活动,使用CardScroller并从中导航到其他活动,如下所示:Java 从卡片滚动器启动单个活动的正确方法,java,android,google-glass,google-gdk,Java,Android,Google Glass,Google Gdk,我创建了一个glass应用程序,其中我有CardScroller活动,使用CardScroller并从中导航到其他活动,如下所示: public class CardScrollActivity extends Activity { private List<CardBuilder> mCards; private CardScrollView mCardScrollView; private ExampleCardScrollAdapter mAdapter; @Overrid
public class CardScrollActivity extends Activity {
private List<CardBuilder> mCards;
private CardScrollView mCardScrollView;
private ExampleCardScrollAdapter mAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCardScrollView = new CardScrollView(this);
mAdapter = new ExampleCardScrollAdapter();
mCardScrollView.setAdapter(mAdapter);
mCardScrollView.activate();
setupClickListener();
setContentView(mCardScrollView);
}
private void setupClickListener() {
// TODO Auto-generated method stub
mCardScrollView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
log(" onitemclick called " );
if(id == 0)
{
log(" onitemclick called and select 1 item " );
Intent myIntent = new Intent(getBaseContext(),
Main2Activity.class);
startActivity(myIntent);
}
if(id == 1)
{
log(" onitemclick called and select 2 item " );
Intent myIntent = new Intent(getBaseContext(),
CompassActivity.class);
startActivity(myIntent);
}
if(id == 2)
{
log(" onitemclick called and select 3 item " );
Intent myIntent = new Intent(getBaseContext(),
GpsActivity.class);
startActivity(myIntent);
}
}
});
}
公共类CardScrollActivity扩展活动{
私有列表mCards;
私有卡滚动视图mCardScrollView;
私有示例CardScrollAdapter mAdapter;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mCardScrollView=新的CardScrollView(此);
mAdapter=新示例CardScrollAdapter();
setAdapter(mAdapter);
mCardScrollView.activate();
设置ClickListener();
setContentView(mCardScrollView);
}
私有void setupClickListener(){
//TODO自动生成的方法存根
mCardScrollView.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
日志(“称为McClick”);
如果(id==0)
{
记录(“单击调用并选择1项”);
Intent myIntent=新的Intent(getBaseContext(),
Main2Activity.class);
星触觉(myIntent);
}
如果(id==1)
{
记录(“单击调用并选择2项”);
Intent myIntent=新的Intent(getBaseContext(),
CompassActivity.class);
星触觉(myIntent);
}
如果(id==2)
{
记录(“单击调用并选择3项”);
Intent myIntent=新的Intent(getBaseContext(),
GpsActivity.class);
星触觉(myIntent);
}
}
});
}
现在的问题是,当我从Cardscroller中选择任何项目时,stack trace会显示多次而不是一次启动活动,为什么它会选择多次plz帮助?老实说,如果您不提供LogCat错误,我也帮不上什么忙 我唯一能说的是,也许你可以尝试完成你当前的活动,以确保在你启动一个新活动后它不会做任何奇怪的事情。为此,你需要在你的意图中添加标志
flag\u activity\u CLEAR\u TOP
,然后在启动意图后立即调用finish()
对于一个意图调用,它将如下所示:
Intent intent = new Intent(this, NewActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
以下是为您提供的实施方案:
if(id == 0) {
log(" onitemclick called and select 1 item " );
Intent intent = new Intent(getBaseContext(), Main2Activity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
} else if(id == 1) {
log(" onitemclick called and select 2 item " );
Intent intent = new Intent(getBaseContext(), CompassActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
} else if(id == 2) {
log(" onitemclick called and select 3 item " );
Intent intent = new Intent(getBaseContext(), GpsActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
finish();
}
你能把
logcat
添加到你的问题中吗?