[英]Issue with Image View and onClickListener
我是android编程的新手,我正在尝试使用imageviews构建一个应用程序,该应用程序会为每个单击了自己的图像视图的图像视图打开一个新活动。 到目前为止,我已经完成了我的主要活动,并在其下面互相约束的情况下放置了4个图像视图。 在我打开应用程序时,所有图像均正常运行,图像视图按其应有的位置进行布局,我可以依次单击imageview1、2、3、4,然后再选择其中的任何一个。 但是,如果我打开该应用程序并尝试先单击imageview 2或例如imageview 3或imageview 4,则它不起作用。 我必须从1开始,然后继续到2,然后是3和4,然后最后我可以自由导航。 我怎样才能解决这个问题? 我以前在下面发布了我的主要活动Java文件。 任何帮助,将不胜感激。
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);
}
}
);
}}
);
}});}});}}
所有视图都使用相同的变量名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...
所有视图都使用相同的变量: private ImageView ts
使用4个不同的变量(ts1,ts2 ...),将解决您的序列问题!
你有两个问题。 第一个问题是您的尾括号位置错误。 第二个问题是您正在使用相同的变量。 这是更正的代码:
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);
}
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.