2

当我单击按钮显示错误消息时:不幸的是,学习已经停止了这里的错误

按钮代码:

Button btn=(Button)findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i1 = new Intent(v.getContext(),Letters.class); 
i1.putExtra("Ar", "a5");
startActivity(i1);
}

});

这是 letter.java 代码:

什么是错误以及如何修复它。

package com.example.learn;

import com.example.learn.R;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.*;
    public class Letters extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_letters);
            ImageView image = new ImageView(this);
            RelativeLayout rl = (RelativeLayout) findViewById(R.id.relativelayout1);
            RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);
            lp.addRule(RelativeLayout.BELOW);
            lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
            Bundle extras = getIntent().getExtras();
            String Ar_let=extras.getString("Ar");
            Toast.makeText(this, Ar_let, Toast.LENGTH_LONG).show();
            if(Ar_let=="a1")
            {
                image = (ImageView) findViewById(R.id.imageView1);
                image.setImageResource(R.drawable.ar_a);
                rl.addView(image, lp);
            }
            else if(Ar_let=="a2")
            {
                image = (ImageView) findViewById(R.id.imageView2);
                image.setImageResource(R.drawable.ar_b);
                rl.addView(image, lp);
            }
            else if(Ar_let=="a3")
            {
                image = (ImageView) findViewById(R.id.imageView3);
                image.setImageResource(R.drawable.ar_c);
                rl.addView(image, lp);
            }
            else if(Ar_let=="a4")
            {
                image = (ImageView) findViewById(R.id.imageView4);
                image.setImageResource(R.drawable.ar4);
                rl.addView(image, lp);
            }
            else if(Ar_let=="a5")
            {
                image = (ImageView) findViewById(R.id.imageView5);
                image.setImageResource(R.drawable.ar5);
                rl.addView(image, lp);
            }
            else
            {
                image = (ImageView) findViewById(R.id.imageView5);
                image.setImageResource(R.drawable.ar5);
                rl.addView(image, lp);
            }
        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.letters, menu);
            return true;
        }

    }

请问是什么错误??!!

我删除 Letters.java 并再次添加,但同样的事情

4

3 回答 3

1

我不知道是什么导致了错误,但我遇到了同样的问题。如果我是你,我会试试这个,因为它对我有用。

将以下行添加到按钮的 xml 代码中:

 android:onClick="startNewActivity"

然后你的按钮的 xml 应该看起来像这样:

    <Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Your Text" 
    android:onClick="startNewActivity" />

使用 Java 代码:

public void startNewActivity(View view) {
    Intent intent = new Intent(this, Letters.class);
    startActivity(intent);
}

您必须将以下行添加到导入部分:

import android.view.View;
android.content.Intent;

编辑:哦,我不确定你是否需要这样做,但我会在 Letter.Class onCreate() 方法中添加这一行。养成这种习惯当然很好,因为在以后的项目中,您可能希望将信息发送到第二个活动。因此,将此行添加到 Letters.class:

Intent intent = getIntent();
于 2013-06-30T08:38:22.843 回答
0

这很可能是因为您正在使用v.getContext();
为什么不尝试以下方法:

Intent intent = new Intent(myFirstClass.this,MySecondClass.class);
startActivity(intent);
于 2013-06-30T18:34:59.173 回答
0

还没有看到 LogCat,但是在接收活动中,你试图接收一个你没有传入的 Bundle。你只传入了一个字符串,所以使用 Intent.getStringExta() 而不是 Bundle

String received = getIntent().getStringExtra("Ar");
于 2013-06-30T18:45:37.657 回答