2015-07-23 14 views
9

Ich habe Layout, Frage und Optionen anzuzeigen, wenn ich irgendwo anders als die Schaltflächen klicken, die ich auf das Standardlayout umgeleitet wird. Ich würde gerne wissen, warum das passiert.Klicken Sie in das Layout umgeleitet zu einem anderen Layout

meine Klasse

package com.example.demo; 

public class MainActivity extends Activity implements OnClickListener { 

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

    View previouslySelectedItem = null; 



    //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, redirecttemplate; 
    ListView listviewoptions; 


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

     setContentView(R.layout.aptitude); 

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

      temp4optimage.setClickable(false); 

      redirecttemplate = (RelativeLayout) findViewById(R.id.redirecttemplate); 

     // int position = 1; 
      listviewoptions = (ListView)findViewById(R.id.listViewoptions); 

      listviewoptions.setOnItemClickListener(new OnItemClickListener() { 


       @Override 
       public void onItemClick(AdapterView<?> arg0, View arg1,int position , 
         long arg3) { 

        //arg1.setBackgroundColor(getResources().getColor(
           // R.color.pressed_color)); 

        if (previouslySelectedItem != null) 
         { 
          previouslySelectedItem.setBackgroundColor(Color.TRANSPARENT); 
            //getResources().getColor(R.color.pressed_color)); 
         } 

        arg1.setBackgroundColor(Color.WHITE); 
           // getResources().getColor(R.color.default_color)); 

         previouslySelectedItem = arg1; 
        // TODO Auto-generated method stub 
        Toast.makeText(getApplicationContext(),String.valueOf(position+1), Toast. LENGTH_SHORT).show(); 
        response = position+1; 

       } 
      }); 



     aptitudesubcateg.setVisibility(View.GONE); 
     temp4optimage.setVisibility(View.GONE); 
     redirecttemplate.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); 

     btnredirect = (Button)findViewById(R.id.btnredirect); 


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

     helper=new DBHelper(this); 


//addQuestion(); 

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

     btnBegin.setOnClickListener(this); 

     btnnext = (Button)findViewById(R.id.btnNxtTemp4optnsImg); 

     btnnext.setOnClickListener(this); 

    } 


    public void addQuestion() 
     { 
      { 

       // Add Record with help of ContentValues and DBHelper class object 
       ContentValues values = new ContentValues(); 
      // values.put(DBHelper.Q_ID, "a"); 


       values.put(DBHelper.Module_ID,"1"); 
       values.put(DBHelper.SubModule_ID,"2"); 
       values.put(DBHelper.Question_ID,"2"); 
       values.put(DBHelper.SubModuleQuestion_ID,"1"); 
       values.put(DBHelper.Title,"Test"); 
       values.put(DBHelper.TitleDescription, "Demo"); 
       values.put(DBHelper.QuestionText, "I find it easy to discuss any topic with a new person"); 
       values.put(DBHelper.QuestionImage, "user.png"); 
       values.put(DBHelper.QuestionTemplate, "template4options.xml"); 
       values.put(DBHelper.CorrectOptionID, "1"); 

       // Call insert method of SQLiteDatabase Class and close after 
       // performing task 
       db = helper.getWritableDatabase(); 
       db.insert(DBHelper.TableQuestionMaster, null, values); 
       db.close(); 


       Toast.makeText(this, "Question Added Successfully", 
         Toast.LENGTH_LONG).show(); 


       } 
     } 

    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; 
    } 

     private void Getoptions() { 
      // database handler 
      DBHelper db = new DBHelper(getApplicationContext()); 

      // Spinner Drop down elements 
      List<String> options = db.getAllOptions(Question_ID); 

      ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
        android.R.layout.simple_list_item_1, android.R.id.text1, options); 

      listviewoptions.setAdapter(adapter); 

      //Toast.makeText(this,"",Toast.LENGTH_LONG).show(); 
     } 



     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(); 

        Getoptions(); 

       } 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","2",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.tvQuestionTextTemplate4ImageAptitude); 

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

        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 
      { 
       aptitudesubcateg.setVisibility(View.GONE); 
        temp4optimage.setVisibility(View.GONE); 
        redirecttemplate.setVisibility(View.VISIBLE); 
       Toast.makeText(this,"NO question to display",Toast.LENGTH_LONG).show(); 
      } 


     } 

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

      } 
      else 
      { 
       aptitudesubcateg.setVisibility(View.GONE); 
        temp4optimage.setVisibility(View.GONE); 
        redirecttemplate.setVisibility(View.VISIBLE); 

      } 

     } 

     public void saveQuestion() 
     { 
      if (response != 0) 
      { 
      ContentValues values = new ContentValues(); 
      // values.put(DBHelper.Q_ID, "a"); 

       values.put(DBHelper.StudentID,"1"); 
       values.put(DBHelper.R_QuestionID,Question_ID); 
       values.put(DBHelper.QuestOptionID,String.valueOf(response)); 

       db = helper.getWritableDatabase(); 
       db.insert(DBHelper.TABLEResponse, null, values); 
       db.close(); 


       Toast.makeText(this, "Response saved Successfully", 
         Toast.LENGTH_LONG).show(); 
        displayquestions(); 

      } 
      else 
      { 
       Toast.makeText(this, "Please Select an option", 
         Toast.LENGTH_LONG).show(); 
      } 

     } 







    @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(); 

      } 

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


      } 

      if (v== btnaptitude4) 
      { 

       getcount("1", "4"); 
      // displayquestions(); 
      } 

      if (v== btnaptitude5) 
      { 

       getcount("1", "5"); 
      // displayquestions(); 
      } 

      if (v== btnnext) 
      { 
       NextQuestion(); 
      } 

      if (v==btnredirect) 
      { 
        aptitudesubcateg.setVisibility(View.VISIBLE); 
        temp4optimage.setVisibility(View.GONE); 
        redirecttemplate.setVisibility(View.GONE); 
      } 


     } 



    } 

My Design

<?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" /> 

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


</RelativeLayout> 
+0

funktioniert nicht umleiten es richtig ist zu ersetzen? –

+0

Ja .. Es sollte überhaupt nicht umleiten ... Wenn ich auf Leerzeichen auf dem Bildschirm klicken, ersetzt es Sub-Kategorie Seite .... –

+0

Wie Sie sehen können, habe ich einige Tags –

Antwort

1

ich, dass ein Klick einmal einen Fehler konfrontiert auf den weißen Raum von Fragment B ein OnClick-Ereignis in der vorherigen verursacht (underlying) Fragment A. Ihr Problem klingt ähnlich wie ich, also gehe ich davon aus, dass Sie auf eine "unsichtbare" Schaltfläche eines der enthaltenen, aber unsichtbaren Layouts klicken.

Also versuchen Sie dies bitte an die Mutter RelativeLayout hinzuzufügen:

android:clickable="true" 
1

Grund: Das ist, weil Sie Ihre vorherigen Bildschirm Touch hat/klicken Hörer auf Mutterunter Eltern, und wenn Sie Ihre Ansicht nicht der Fall ist Habe einen davon, dass er dieses Event an die Eltern/Superansicht weitergibt.

Lösungen sind viele,

1) In Zeile android:clickable="true" in Ihrer aktuellen Aktivität/Elternansicht des Fragments

2) In den folgenden Code in der aktuellen Aktivität/Fragment onCreate()

root.setOnTouchListener(new View.OnTouchListener() { 
     public boolean onTouch(View v, MotionEvent event) { 
      return true; 
     } 
    }); 

3) Fügen Sie dem übergeordneten Layout Ihrer Ansicht android:onClick=temp hinzu und machen Sie eine temp(View v) Methode in Ihrer Klasse.

4), wenn sie vor dem Übergang commit() diese Linie dann ein Fragment ist hinzuzufügen .addToBackStack(null)

1

versuchen Sie zu rufen onCreate() -Methode die setEnable (false) und/oder setClickable (false) mothods der anderen Ansichten als die Tasten.

Aber vor allem sollten Sie die IDs überprüfen, nicht die Ansichten direkt:

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    int id = v.getId(); 
    switch(id){ 
     case R.id.btnaptitude1Id: 
     ... 
     break; 
     case R.id.btn1: 
     ... 
    } 

Wenn Sie die ID nicht mögen, zumindest sollten Sie die Verwendung „equals()“ Methode:

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    if(v.equals(btnBegin){ 
     ... 
    } 
    if(v.equals(btnaptitude1){ 
     ... 
    } 
    ... 

sehen sie, wenn es mit diesem

Verwandte Themen