Android 如何在AlertDialog中更改消息,每次我在andriod中单击不同的图像时?
我是android的初学者。我想在用户单击图像时显示图像描述(使用AlertDialog)。但是当我单击其他图像时,AlertDialog(警报)对话框总是显示第一条保存的消息?当我单击其他图像时,它不会重置。谁能帮帮我 MainActivity.javaAndroid 如何在AlertDialog中更改消息,每次我在andriod中单击不同的图像时?,android,android-alertdialog,Android,Android Alertdialog,我是android的初学者。我想在用户单击图像时显示图像描述(使用AlertDialog)。但是当我单击其他图像时,AlertDialog(警报)对话框总是显示第一条保存的消息?当我单击其他图像时,它不会重置。谁能帮帮我 MainActivity.java public class MainActivity extends AppCompatActivity implements View.OnClickListener { Spinner spinner; ImageView
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Spinner spinner;
ImageView imageView,imgpt1,imgpt2,imgpt3,imgpt4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinner=(Spinner)findViewById(R.id.spinner);
imageView=(ImageView)findViewById(R.id.imageViewspinner);
imgpt1=(ImageView)findViewById(R.id.imagepart1);
imgpt2=(ImageView)findViewById(R.id.imagepart2);
imgpt3=(ImageView)findViewById(R.id.imagepart3);
imgpt4=(ImageView)findViewById(R.id.imagepart4);
imgpt1.setOnClickListener(this);
imgpt2.setOnClickListener(this);
imgpt3.setOnClickListener(this);
imgpt4.setOnClickListener(this);
List<String> categories=new ArrayList<String>();
categories.add("Front View");
categories.add("Side View");
categories.add("Back View");
categories.add("Top View");
ArrayAdapter<String> stringArrayAdapter=new ArrayAdapter<String>(this,R.layout.support_simple_spinner_dropdown_item,categories);
stringArrayAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
spinner.setAdapter(stringArrayAdapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
if(position==0)
{
imageView.setImageResource(R.drawable.carfrontview);
imgpt1.setImageResource(R.drawable.frontbumpers);
imgpt1.setTag("frontbumpers");
imgpt2.setImageResource(R.drawable.frontfenders);
imgpt2.setTag("frontfenders");
imgpt3.setImageResource(R.drawable.frontgrilles);
imgpt2.setTag("frontgrilles");
imgpt4.setImageResource(R.drawable.frontheadlight);
imgpt2.setTag("frontheadlight");
}
else if(position==1)
{
imageView.setImageResource(R.drawable.carsideview);
imgpt1.setImageResource(R.drawable.sidebumpers);
imgpt2.setImageResource(R.drawable.sidedoor);
imgpt3.setImageResource(R.drawable.sidefuelcovers);
imgpt4.setImageResource(R.drawable.sidemirror);
}
else if(position==2)
{
imageView.setImageResource(R.drawable.carbackview);
imgpt1.setImageResource(R.drawable.backrearbumpers);
imgpt2.setImageResource(R.drawable.backrearmirror);
imgpt3.setImageResource(R.drawable.backrearwindow);
imgpt4.setImageResource(R.drawable.backtaillights);
}
else if(position==3)
{
imageView.setImageResource(R.drawable.cartopview);
imgpt1.setImageResource(R.drawable.topbattery);
imgpt2.setImageResource(R.drawable.topfuelinjection);
imgpt3.setImageResource(R.drawable.topoildipstick);
imgpt4.setImageResource(R.drawable.topradiator);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
@Override
public void onClick(View v) {
String message="";
if(imgpt1.getTag()=="frontbumpers")
{
message="This is Bumper";
}
else if(imgpt1.getTag()=="frontfenders")
{
message="This is Fenders";
}
else if(imgpt1.getTag()=="frontheadlight")
{
message="This is headlight";
}
else if(imgpt1.getTag()=="frontgrilles")
{
message="This is grilles";
}
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
builder.setTitle("Car Parts");
builder.setMessage(message);
builder.setNeutralButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
}).create().show();
}
}
public类MainActivity扩展AppCompatActivity实现View.OnClickListener{
纺纱机;
ImageView ImageView、imgpt1、imgpt2、imgpt3、imgpt4;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
微调器=(微调器)findViewById(R.id.spinner);
imageView=(imageView)findViewById(R.id.imageViewspinner);
imgpt1=(ImageView)findViewById(R.id.imagepart1);
imgpt2=(ImageView)findViewById(R.id.imagepart2);
imgpt3=(ImageView)findViewById(R.id.imagepart3);
imgpt4=(ImageView)findViewById(R.id.imagepart4);
imgpt1.setOnClickListener(这个);
imgpt2.setOnClickListener(这个);
imgpt3.setOnClickListener(这个);
imgpt4.setOnClickListener(此);
列表类别=新建ArrayList();
类别。添加(“前视图”);
类别。添加(“侧视图”);
类别。添加(“后视图”);
类别。添加(“俯视图”);
ArrayAdapter stringArrayAdapter=新的ArrayAdapter(此为R.layout.support\u simple\u spinner\u dropdown\u项,类别);
stringArrayAdapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
spinner.setAdapter(stringArrayAdapter);
spinner.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图视图、整型位置、长id){
如果(位置==0)
{
设置图像资源(R.drawable.carfrontview);
imgpt1.setImageResource(R.drawable.frontbumpers);
imgpt1.setTag(“前保险杠”);
imgpt2.setImageResource(右前翼子板);
imgpt2.setTag(“前挡泥板”);
imgpt3.setImageResource(R.drawable.frontgrilles);
imgpt2.setTag(“前格栅”);
imgpt4.setImageResource(R.drawable.frontheadlight);
imgpt2.setTag(“前照灯”);
}
否则如果(位置==1)
{
setImageResource(R.drawable.carsideview);
imgpt1.setImageResource(R.drawable.sidebumpers);
imgpt2.setImageResource(R.drawable.sidedoor);
imgpt3.setImageResource(R.drawable.sidefuelcovers);
imgpt4.setImageResource(R.drawable.sidemirror);
}
否则如果(位置==2)
{
setImageResource(R.drawable.carbackview);
imgpt1.setImageResource(R.drawable.后保险杠);
imgpt2.setImageResource(可拉深的后视镜);
imgpt3.setImageResource(R.drawable.Back-RearWindow);
imgpt4.setImageResource(R.drawable.backtaillights);
}
否则如果(位置==3)
{
setImageResource(R.drawable.cartopview);
imgpt1.setImageResource(R.drawable.topbattery);
imgpt2.setImageResource(R.drawable.topfuelinjection);
imgpt3.setImageResource(R.drawable.TopoilStick);
imgpt4.setImageResource(R.drawable.TopRadiance);
}
}
@凌驾
未选择公共无效(AdapterView父级){
}
});
}
@凌驾
公共void onClick(视图v){
字符串消息=”;
if(imgpt1.getTag()=“前保险杠”)
{
message=“这是保险杠”;
}
else if(imgpt1.getTag()=“前挡泥板”)
{
message=“这是挡泥板”;
}
else if(imgpt1.getTag()=“前照灯”)
{
message=“这是头灯”;
}
else if(imgpt1.getTag()=“frontgrilles”)
{
message=“这是grilles”;
}
AlertDialog.Builder=新建AlertDialog.Builder(MainActivity.this);
制造商名称(“汽车零件”);
builder.setMessage(message);
setNeutralButton(“确定”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
dialog.cancel();
}
}).create().show();
}
}
试试这个
如果必须检查字符串,请使用.equals(),如果是int,请使用=
if(imgpt1.getTag().equals("frontbumpers"))
{
message="This is Bumper";
}
else if(imgpt1.getTag().equals("frontfenders"))
{
message="This is Fenders";
}
else if(imgpt1.getTag().equals("frontheadlight"))
{
message="This is headlight";
}
else if(imgpt1.getTag().equals("frontgrilles")
{
message="This is grilles";
}
试试这个
如果必须检查字符串,请使用.equals(),如果是int,请使用=
if(imgpt1.getTag().equals("frontbumpers"))
{
message="This is Bumper";
}
else if(imgpt1.getTag().equals("frontfenders"))
{
message="This is Fenders";
}
else if(imgpt1.getTag().equals("frontheadlight"))
{
message="This is headlight";
}
else if(imgpt1.getTag().equals("frontgrilles")
{
message="This is grilles";
}
在
onClick中
use
imgpt1.getTag().equals(“frontgrilles”)
而不是
imgpt1.getTag()=="frontgrilles"
在
onClick中
use
imgpt1.getTag().equals(“frontgrilles”)
而不是
imgpt1.getTag()=="frontgrilles"
您应该检查
视图的标记,而不是静态项,因为它们总是正确的!看看你的第一个条件imgpt1
标记为“frontbumpers
”,因此该条件始终为真!因此,它每次都显示相同的消息
@Override
public void onClick(View v) {
String message="";
//for your clarification here v is the view which was clicked ex. impt1 or 2 3 4.... or anything which has an onClick listener assigned and was click will call this method.
if(v.getTag()=="frontbumpers")
{
message="This is Bumper";
}
else if(v.getTag()=="frontfenders")
{
message="This is Fenders";
}
else if(v.getTag()=="frontheadlight")
{
message="This is headlight";
}
else if(v.getTag()=="frontgrilles")
{
message="This is grilles";
}
}
**建议对字符串使用equals()
而不是=
。更改为'v.getTag().equals(“someValueYouWantToCheck”)
您应该检查视图的标记,而不是静态项,因为它们总是正确的!看看你的第一个条件<代码>imgpt1
标签为“前保险杠v.getTag.equals("xxx")
String string1 = "abc", string2 = "Abc";
TextUtils.isEmpty(string1); // Returns true if the string is empty or null
string1.equals(string2) //Checks with case sensitivity
string1.equalsIgnoreCase(string2) // Checks without case sensitivity. Here this will return true.