Intent GridLayout到4个活动

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Intent GridLayout到4个活动相关的知识,希望对你有一定的参考价值。

我有GridLayout里面有CardView。我想为4种不同的活动创建一个Intent。我只能执行一个Intent。我不知道我是否应该使用Else Ifcase。谢谢你的帮助。这是我的代码。

GridLayout mainGrid;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.dashboard);
    mainGrid = (GridLayout)findViewById(R.id.grid);
    setSingleEvent(mainGrid);
}

private void setSingleEvent(GridLayout mainGrid) {

    for (int i=0;i<mainGrid.getChildCount();1++)
    {
        CardView cardView = (CardView)mainGrid.getChildAt(i);
        final int final1= i;
        cardView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Intent i=new      Intent(DashboardActivity.this,MapsActivity.class);
                startActivity(i);
            }
        });
    }
}
答案

我认为你的问题来自于缺乏对程序执行顺序的理解。如果你插入一个循环然后你放入一个匿名类,因为View.onViewClickListener的情况是正常的,你将只有一个结果,因为你打破了for循环。

要走的路应该是不要使用for循环,而是根据你想要获得的内容分配不同的Explicit Intents。

编辑。在您的用例的基础上,您需要从适配器触发Intent。请参阅herehere,基本上你需要使用android SDK功能,告诉你哪个卡被点击mRecyclerView.getChildLayoutPosition(view);然后根据你的需要你可能(或不)传递switch case用于教育目的,虽然可能不是最优雅有效的解决方法。

另一答案

如果您希望根据点击的CardView启动不同的Activity,请尝试以下操作:

private void setSingleEvent(GridLayout mainGrid) {
    mainGrid.getChildAt(0).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(i);
            }
        });
    mainGrid.getChildAt(1).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                startActivity(i);
            }
        });
        //do this for all 4 cardViews.
}

简而言之:分别设置所有意图。

以上是关于Intent GridLayout到4个活动的主要内容,如果未能解决你的问题,请参考以下文章

Android第一行代码学习笔记六---Intent向活动传递数据

获取 ImageView 的图像并将其发送到带有 Intent 的活动

未找到Android活动异常:找不到处理Intent的活动

使用Intent在活动之间穿梭

删除参数以匹配 Intent()

如何将数据从 Intent 传递到 Fragment