2017-06-07 87 views
1

Im新的android编程,我正尝试构建一个应用程序与图像打开一个新的活动为每个图像视图点击与他们自己的图像视图。到目前为止,我已经完成了我的主要活动,并将其上的4个图像视图全部放在彼此之下并受到约束。在我打开应用程序的意义上,所有工作都很好,图像视图展示了它们应该如何,我可以点击imageview1,然后是2,然后是3,然后是4,然后是其中任何一个。但如果我打开应用程序,并尝试点击imageview 2第一或imageview 3例如,或imageview 4然后它不起作用。我必须从1开始,然后继续2,然后3和4,最后我可以自由导航。我怎样才能解决这个问题?我之前已经发布了我的主要活动java文件。任何帮助,将不胜感激。问题与图像视图和onClickListener

package com.ntq.ntqapp; 


import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.ImageView; 



public class MainActivity1 extends AppCompatActivity { 
private ImageView ts; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main1); 


    ts = (ImageView)findViewById(R.id.ts1); 
    ts.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View view){ 
      Intent myIntent = new Intent(MainActivity1.this, imageView1.class); 
      startActivity(myIntent); 


    ts = (ImageView)findViewById(R.id.ts2); 
    ts.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View view) { 
      Intent myIntent = new Intent(MainActivity1.this, imageView2.class); 
      startActivity(myIntent); 

    ts = (ImageView)findViewById(R.id.ts3); 
    ts.setOnClickListener(new View.OnClickListener(){ 
      public void onClick(View view) { 
      Intent myIntent = new Intent(MainActivity1.this, imageView3.class); 
      startActivity(myIntent); 

    ts = (ImageView) findViewById(R.id.ts4); 
    ts.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View view) { 
       Intent myIntent = new Intent(view.getContext(), imageView4.class); 
      startActivity(myIntent); 


     } 

     } 
     ); 
     }} 
     ); 
     }});}});}} 

回答

1

你有两个问题。第一个问题是你的结束括号位于错误的位置。第二个问题是你正在使用相同的变量。下面是校正的代码:

package com.ntq.ntqapp; 


import android.content.Intent; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.ImageView; 



public class MainActivity1 extends AppCompatActivity { 
private ImageView ts1; 
    private ImageView ts2; 
    private ImageView ts3; 
    private ImageView ts4; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main1); 

     ts1 = (ImageView) findViewById(R.id.ts1); 
     ts1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       Intent myIntent = new Intent(MainActivity1.this, 
              imageView1.class); 
       startActivity(myIntent); 
      } 
     }); 

     ts2 = (ImageView) findViewById(R.id.ts2); 
     ts2.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       Intent myIntent = new Intent(MainActivity1.this, 
              imageView2.class); 
       startActivity(myIntent); 
      } 
     }); 
     ts3 = (ImageView) findViewById(R.id.ts3); 
     ts3.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       Intent myIntent = new Intent(MainActivity1.this, 
              imageView3.class); 
       startActivity(myIntent); 
      } 
     }); 
     ts4 = (ImageView) findViewById(R.id.ts4); 
     ts4.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       Intent myIntent = new Intent(view.getContext(), 
              imageView4.class); 
       startActivity(myIntent); 
      } 
     }); 
    } 
+0

兄弟...我爱你。这是那些肯定与括号现在它应该如何工作。非常感谢 :) – Essentialz

1

您正在使用相同的变量对所有的观点:private ImageView ts
使用4个不同的变量(TS1,TS2),他们会解决您的序列问题!

+0

是的,我试图用TS1,TS2,TS3,TS4之前,但它反应是相同的。我可以点击第一图像视图然后第二然后第三然后第四然后其中任何一个,但如果尝试点击2,3或4 imageview首先我不能:S – Essentialz

+0

你有这个'ts =(ImageView)findViewById(R.id.ts2) '将其更改为'ts2 =(ImageView)findViewById(R.id.ts2)'.. simialrly其余以及 – Zakir

2

您对所有视图都使用相同的变量名称ts。

更改为ts1,ts2,ts3,ts4。

关闭圆括号还有一些问题。

您需要每次关闭onClick方法,内部类和外部方法的括号。

ts1 = (ImageView) findViewById(R.id.ts1); 
ts.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View view) { 
     Intent myIntent = new Intent(MainActivity1.this, imageView1.class); 
     startActivity(myIntent); 
    } //you are missing this 
}); //and this 

// Notice how I change the variable name to ts2 here... 
ts2 = (ImageView)findViewById(R.id.ts2); 
//rinse and repeat... 
+0

这将工作,我想但我试过蒂姆答案上面,它现在的作品。谢谢你的帮助:) – Essentialz