在android中将一个活动的多个意图发送到另一个活动

时间:2014-01-30 15:10:56

标签: android sqlite android-intent

我正在制作学生时间表Android应用程序项目,我应该为特定时间段的特定日期的特定类设置警报。例如。操作系统是在星期一上午11点,然后警报应该在几分钟之前设置。为此我需要从一个到另一个活动发送3个意图用于发送日期,时间段和主题名称。我在下面的代码片段时遇到一些问题试图发送意图。

for (c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) {


                        String subject = c.getString(c.getColumnIndex("subject"));
                        String day = c.getString(c.getColumnIndex("day"));

                        String slot1 = c.getString(c.getColumnIndex("7:30-9:10AM"));    
                        String slot2 = c.getString(c.getColumnIndex("9:20-11:00AM"));
                        String slot3 = c.getString(c.getColumnIndex("11:10-12:50PM"));
                        String slot4 = c.getString(c.getColumnIndex("1:40-3:20PM"));
                        String slot5 = c.getString(c.getColumnIndex("3:30-5:00PM"));

                    TableRow tr1=new TableRow(viewtimetable.this);

                                tr1.setLayoutParams(new LayoutParams(
                                           LayoutParams.FILL_PARENT,
                                           LayoutParams.WRAP_CONTENT));     

                            TextView b=new TextView(viewtimetable.this);

                                b.setText(day);
                                b.setTextColor(Color.RED);
                                b.setTextSize(15);
                                tr1.addView(b);


                               TextView b1=new TextView(viewtimetable.this);
                               TextView b2=new TextView(viewtimetable.this);
                               TextView b3=new TextView(viewtimetable.this);
                               TextView b4=new TextView(viewtimetable.this);
                               TextView b5=new TextView(viewtimetable.this);


                                b1.setPadding(10, 0, 0, 0);
                                b1.setTextSize(15);
                                b1.setTextColor(Color.RED);


                                b2.setPadding(10, 0, 0, 0);
                                b2.setTextColor(Color.RED);
                                b2.setTextSize(15);


                                b3.setPadding(10, 0, 0, 0);
                                b3.setTextColor(Color.RED);
                                b3.setTextSize(15);


                                b4.setPadding(10, 0, 0, 0);
                                b4.setTextColor(Color.RED);
                                b4.setTextSize(15);


                                b5.setPadding(10, 0, 0, 0);
                                b5.setTextColor(Color.RED);
                                b5.setTextSize(15);


                                if(day.equals("Friday"))
                                {

                                    if(slot1 != null){ 
                                        b1.setText(slot1);
//Here's the main scene.I only want to send the intent if the above condition satisfies.
    Intent intent = new Intent(getApplicationContext(),AlarmActivity.class);
    intent.putExtra("Day",day);
    intent.putExtra("Subject",subject);

startActivity(intent);
                                    }
                                    if(slot2 != null)
                                    {
                                        b2.setText(slot2);  
                                    }
                                    if(slot3 != null)
                                    {
                                        b3.setText(slot3);  
                                    }
                                    if(slot4 != null)
                                    {
                                        b4.setText(slot4);  
                                    }
                                    if(slot5 != null)
                                    {
                                        b5.setText(slot5);  
                                    }

                                 }

                                else if(day.equals("Monday"))
                                {
                                    if(slot1 != null){ 
                                    b1.setText(slot1);
                                    }
                                    if(slot2 != null)
                                    {
                                        b2.setText(slot2);  
                                    }
                                    if(slot3 != null)
                                    {
                                        b3.setText(slot3);  
                                    }
                                    if(slot4 != null)
                                    {
                                        b4.setText(slot4);  
                                    }
                                    if(slot5 != null)
                                    {
                                        b5.setText(slot5);  
                                    }

                                 }



                                else if(day.equals("Tuesday"))
                                {

                                    if(slot1 != null){ 
                                    b1.setText(slot1);
                                    }
                                    if(slot2 != null)
                                    {
                                        b2.setText(slot2);  
                                    }
                                    if(slot3 != null)
                                    {
                                        b3.setText(slot3);  
                                    }
                                    if(slot4 != null)
                                    {
                                        b4.setText(slot4);  
                                    }
                                    if(slot5 != null)
                                    {
                                        b5.setText(slot5);  
                                    }

                                 }


                                else if(day.equals("Wednesday"))
                                {

                                    if(slot1 != null){ 
                                    b1.setText(slot1);
                                    }
                                    if(slot2 != null)
                                    {
                                        b2.setText(slot2);  
                                    }
                                    if(slot3 != null)
                                    {
                                        b3.setText(slot3);  
                                    }
                                    if(slot4 != null)
                                    {
                                        b4.setText(slot4);  
                                    }
                                    if(slot5 != null)
                                    {
                                        b5.setText(slot5);  
                                    }

                                 }


                                else if(day.equals("Thursday"))
                                    {

                                        if(slot1 != null){ 
                                        b1.setText(slot1);
                                        }
                                        if(slot2 != null)
                                        {
                                            b2.setText(slot2);  
                                        }
                                        if(slot3 != null)
                                        {
                                            b3.setText(slot3);  
                                        }
                                        if(slot4 != null)
                                        {
                                            b4.setText(slot4);  
                                        }
                                        if(slot5 != null)
                                        {
                                            b5.setText(slot5);  
                                        }

                                     }



                                else if(day.equals("Saturday"))
                                        {

                                            if(slot1 != null){ 
                                            b1.setText(slot1);
                                            }
                                            if(slot2 != null)
                                            {
                                                b2.setText(slot2);  
                                            }
                                            if(slot3 != null)
                                            {
                                                b3.setText(slot3);  
                                            }
                                            if(slot4 != null)
                                            {
                                                b4.setText(slot4);  
                                            }
                                            if(slot5 != null)
                                            {
                                                b5.setText(slot5);  
                                            }

                                         }

                                  tr1.addView(b1);  
                                  tr1.addView(b2);
                                  tr1.addView(b3);
                                  tr1.addView(b4);
                                  tr1.addView(b5);
                                  tv.addView(tr1);

问题

如果我喜欢上面的内容,它产生的例外是

couldn't read row 0,col -1 from CursowWindow.Make sure the cursor is initialized correctly before accessing data from it.

问题

我应该在代码片段中修改什么,以便我可以将意图发送到AlarmReceiver.class活动,并可以使用

检索
String day =  getIntent().getExtras().getString("Day");
String subject = getIntent().getExtras().getString("Subject");

PS

我也尝试使用SharedPreferences,但抛出相同的异常。

解决方案

这是愚蠢的,但在我的查询中,我没有投射我在代码中使用的数据库列。有例外。

2 个答案:

答案 0 :(得分:2)

您的例外是由于一些(可能是多个)电话:

c.getColumnIndex(columnName)

如果没有名为columnName的列,则这些方法返回-1。因此,c.getString(-1)会引发异常,因为-1不是有效列。确保在查询过程中,这些列名称确实存在于数据库/ ContentProvider和投影中。

答案 1 :(得分:-1)

我认为你的光标是空的。 试试这个:

c.moveToFirst();
while(c.moveToNext()) {
Log.d("ClassName","Cursor is not empty");
rest of code
}