首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android:无法以编程方式设置布局文件中的值

Android:无法以编程方式设置布局文件中的值
EN

Stack Overflow用户
提问于 2015-07-20 17:36:21
回答 2查看 94关注 0票数 -1

我正尝试在布局文件中以编程方式将文本添加到textview和单选按钮中。我已经调试了应用程序,看到光标返回了正确的值,但我无法将这些值绑定到文本视图。

displayquestions函数中的问题

代码语言:javascript
复制
package com.Example.assesmenttool;


public class Aptitude extends Activity implements OnClickListener {

    DBHelper helper;
    SQLiteDatabase db;
    Button btnBegin,btnnext;
    int count = 0;

    //Sub category Buttons
    Button btnaptitude5,btnaptitude4,btnaptitude3,btnaptitude2,btnaptitude1;

    String Question_ID,Title,TitleDescription,QuestionText,QuestionTemplate,QuestionImage;

    //String SubModuleQuestion_ID;

    TextView tvTitle,tvInstructions,tvQuestionText;

    RadioGroup rgtemplate4images;
    ImageView img;
     RelativeLayout aptitudesubcateg,temp4optimage;



    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.aptitude);

          aptitudesubcateg = (RelativeLayout) findViewById(R.id.aptitudesubcateg);
          temp4optimage = (RelativeLayout) findViewById(R.id.temp4optimage);


         aptitudesubcateg.setVisibility(View.GONE);
         temp4optimage.setVisibility(View.GONE);


        btnaptitude1 = (Button)findViewById(R.id.btnaptitude1);
        btnaptitude2 = (Button)findViewById(R.id.btnaptitude2);
        btnaptitude3 = (Button)findViewById(R.id.btnaptitude3);
        btnaptitude4 = (Button)findViewById(R.id.btnaptitude4);
        btnaptitude5 = (Button)findViewById(R.id.btnaptitude5);

        btnaptitude1.setOnClickListener(this);
        btnaptitude2.setOnClickListener(this);
        btnaptitude3.setOnClickListener(this);
        btnaptitude4.setOnClickListener(this);
        btnaptitude5.setOnClickListener(this);

        helper=new DBHelper(this);
        //Resources res = getResources();
        //String[] myBooks = res.getStringArray(R.array.my_questions);



        btnBegin = (Button)findViewById(R.id.btnBeginAptitude);

        btnBegin.setOnClickListener(this);

    }

     public int getcount(String moduleID, String SubModuleID)
     {
         count = 0;
         String selectQuery = "Select * from TableQuestionMaster where Module_ID = "+moduleID+" AND SubModule_ID ="+SubModuleID;

            SQLiteDatabase db = helper.getReadableDatabase();
            Cursor cursor = db.rawQuery(selectQuery, null);
            count =  cursor.getCount();

            Toast.makeText(this, String.valueOf(count) ,Toast.LENGTH_LONG).show(); 

            cursor.close();
            db.close();

    return count; 
     }



       public void getAllQuestionsAptitude(String moduleID, String SubModuleID,String SubModuleQuestion_ID){



           SQLiteDatabase db = helper.getReadableDatabase();
           Cursor c = null;

           if (count>0)
            {

           //   SubModuleQuestion_ID = "1";
                   String selectQuestion = "Select * from TableQuestionMaster where Module_ID = "+moduleID+" AND SubModule_ID ="+SubModuleID+" AND SubModuleQuestion_ID ="+SubModuleQuestion_ID;
                      c = db.rawQuery(selectQuestion, null);
            if (c.moveToFirst()) {
                do {


                    Question_ID = c.getString(c.getColumnIndex("Question_ID")); 

                    Title = c.getString(c.getColumnIndex("Title"));


                    TitleDescription = c.getString(c.getColumnIndex("TitleDescription"));


                    QuestionText = c.getString(c.getColumnIndex("QuestionText"));


                    QuestionTemplate = c.getString(c.getColumnIndex("QuestionTemplate"));


                    QuestionImage = c.getString(c.getColumnIndex("QuestionImage"));

                    Toast.makeText(this,Question_ID+" "+Title+" "+TitleDescription+" "+QuestionText+" "+QuestionTemplate+" "+QuestionImage,Toast.LENGTH_LONG).show();



                } while (c.moveToNext());        
            }
            }
            else

            {
                 Toast.makeText(this,"NO question to display",Toast.LENGTH_LONG).show();

            }


            // closing connection
            c.close();
            db.close();

        }

       public void displayquestions()
       {
           Toast.makeText(this,"count on display Q is"+ count,Toast.LENGTH_LONG).show();
           if (count >0)
           {
               getAllQuestionsAptitude("1","1",String.valueOf(count));

                    aptitudesubcateg.setVisibility(View.GONE);      
                    temp4optimage.setVisibility(View.VISIBLE);    
                    tvTitle = (TextView)findViewById(R.id.tvTitleTemplate4optoinsImage);
                    tvInstructions = (TextView)findViewById(R.id.tvInstructionstemplate4);
                    tvQuestionText = (TextView)findViewById(R.id.tvQuestionTextTemplate4Image);

                    img = (ImageView)findViewById(R.id.imageViewtemplate4options);

                    tvTitle.setText(Title);
                    tvInstructions.setText(TitleDescription);
                    tvQuestionText.setText(QuestionText);

                    String imgName = QuestionImage; // specify here your image name fetched from db
                    String uri = "drawable/" + imgName;
                    int icon = getResources().getIdentifier(uri, "drawable", getPackageName());
                    img.setImageResource(icon);

                    //NextQuestion();
           }
           else
           {
               Toast.makeText(this,"NO question to display",Toast.LENGTH_LONG).show();
           }


       }

       public void NextQuestion()
       {
           if (count>0)
           {
           count = count - 1;
           displayquestions();
           }

       }




    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

        if (v==btnBegin)
        {
             aptitudesubcateg.setVisibility(View.VISIBLE);
              temp4optimage.setVisibility(View.GONE);

        }       
            if (v== btnaptitude1)
            {               
                      getcount("1", "1");
                      displayquestions();          

            }

            if (v== btnaptitude2)
            {
                  getcount("1", "2");
                  displayquestions();
            //  getAllQuestionsAptitude("1","2");
            }

            if (v== btnaptitude3)
            {
                  getcount("1", "3");
                  displayquestions();

                //getAllQuestionsAptitude("1","3");
            }

            if (v== btnaptitude4)
            {
            //  getAllQuestionsAptitude("1","1");
                 getcount("1", "4");
                 displayquestions();
            }

            if (v== btnaptitude5)
            {
            //  getAllQuestionsAptitude("1","1");
                 getcount("1", "5");
                 displayquestions();
            }           


        }



    }

XML

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/back" >

    <TextView
        android:id="@+id/tvInstructionsAptitude"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/tvQuestionTextTemplate4Image"
        android:layout_alignParentTop="true"
        android:layout_alignRight="@+id/TextView01"
        android:layout_marginTop="93dp"
        android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam nibh ex, elementum non bibendum ac, consequat a sem. Proin aliquet arcu id lacus interdum, sed fermentum neque sollicitudin. Vestibulum mauris massa, vulputate tincidunt quam vel, egestas tincidunt nisi. Ut ut nulla sagittis, aliquet lectus vitae, pretium nisi. Duis maximus, magna vitae ultricies consectetur, ex felis congue turpis, id scelerisque nisl ex at turpis. Aenean dui sapien, euismod at sem non, rhoncus molestie urna. Mauris condimentum risus felis, nec iaculis orci accumsan nec. Vivamus pharetra ultricies quam a aliquam. Praesent facilisis turpis malesuada massa interdum consequat. In hac habitasse platea dictumst. Integer efficitur nibh risus, ac mattis mi porta ut. Nam leo ex, pulvinar eu orci vel, pretium maximus velit. Pellentesque rhoncus sapien felis, in cursus eros malesuada imperdiet."
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/tvQuestionTextTemplate4Image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginLeft="53dp"
        android:layout_marginTop="40dp"
        android:text="Instructions"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <TextView
        android:id="@+id/TextView01"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/tvQuestionTextTemplate4Image"
        android:layout_alignBottom="@+id/tvQuestionTextTemplate4Image"
        android:layout_alignParentRight="true"
        android:layout_marginRight="36dp"
        android:text="Time : 10 Mins"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Button
        android:id="@+id/btnBeginAptitude"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/tvInstructionsAptitude"
        android:layout_alignRight="@+id/tvInstructionsAptitude"
        android:layout_below="@+id/tvInstructionsAptitude"
        android:layout_marginTop="42dp"
        android:text="Begin" />

    <include
        android:id="@+id/aptitudesubcateg"
        android:layout_width="match_parent"
        android:layout_height="match_parent"

        layout="@layout/aptitudesubcategory" />

    <include
        android:id="@+id/temp4optimage"
        android:layout_width="fill_parent"
        android:layout_height="match_parent"
        layout="@layout/template4optionsimage" />

</RelativeLayout>

结果

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-20 18:09:22

您是否可以通过将以下代码行放入oncreate()方法中而不是displayquestions()中来尝试一次

代码语言:javascript
复制
            tvTitle = (TextView)findViewById(R.id.tvTitleTemplate4optoinsImage);
            tvInstructions = (TextView)findViewById(R.id.tvInstructionstemplate4);
            tvQuestionText = (TextView)findViewById(R.id.tvQuestionTextTemplate4Image);

            img = (ImageView)findViewById(R.id.imageViewtemplate4options);
票数 1
EN

Stack Overflow用户

发布于 2015-07-20 18:24:59

如果你的cursor只返回一行(我猜这是通过查看你的query),你的不需要一个循环,通过在一个循环中写你的strings正在被初始化,但是它们被新值覆盖。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31513132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档