创建活动时崩溃

时间:2012-10-09 13:04:04

标签: android

晚上好堆!

我已经开始学习Android开发作为一种爱好,我现在正在尝试开发我的第一个“真正的”应用程序(我已经只从书中制作了五个简单的应用程序)。

在这个应用程序中,我有两个按钮,它们将“创建”相同的Activity,但是使用来自同一基类的两个不同对象,因此允许我根据单击的按钮自定义应用程序的行为。 但是,当我尝试创建Intent实例时,我的应用程序崩溃了。

以下是基本Activity类的代码

public class BaseDictionnaryActivity extends Activity 
{
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.basedictionnary);
    }

    public void onDestroy() 
    {   
        super.onDestroy();
    }
}

这是崩溃的代码。该行是创建Intent对象的行。

public class DictionnaryActivity extends Activity 
{
    private BaseDictionnaryActivity jlpt1;
    private BaseDictionnaryActivity jlpt2;

    private Button btjlpt1 = null;
    private Button btjlpt2 = null;

    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dictionnary);

        jlpt2 = new BaseDictionnaryActivity();
        jlpt1 = new BaseDictionnaryActivity();

        btJLPT1 = (Button)findViewById(R.id.jlpt1);
        btJLPT1.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                Intent myIntent = new Intent(DictionnaryActivity.this,   
                                             jlpt1.getClass());
                jlpt1.this.startActivity(myIntent); 
            }
        }); 
        btJLPT2 = (Button)findViewById(R.id.jlpt2);
        btJLPT2.setOnClickListener(new View.OnClickListener()
        {
            public void onClick(View v)
            {
                Intent myIntent = new Intent(DictionnaryActivity.this, 
                                             jlpt2.getClass());
                jlpt2.this.startActivity(myIntent); 
            }
        });
     }
     public void onDestroy() 
     {   
          super.onDestroy();
     }
}

感谢您的帮助!

5 个答案:

答案 0 :(得分:4)

只是为了纠正,

Intent myIntent = new Intent(DictionnaryActivity.this,   
                                         jlpt1.getClass());

在此,第二个参数必须是,您的目标活动BaseDictionnaryActivity.class

所以,它看起来像,

Intent myIntent = new Intent(DictionnaryActivity.this,   
                                         BaseDictionnaryActivity.class);
startActivity(myIntent);

另外请确保在应用程序的清单文件中输入BaseDictionnaryActivity,

看起来像,

<activity android:name=".BaseDictionnaryActivity"
         ....>
 </activity>

答案 1 :(得分:1)

Maybe:
Intent myIntent = new Intent(DictionnaryActivity.this,   
                                         BaseDictionnaryActivity.class);
startActivity(myIntent);

答案 2 :(得分:0)

更改此

 Intent myIntent = new Intent(DictionnaryActivity.this, 
                                             NextActivity.class);

答案 3 :(得分:0)

Intent myIntent = new Intent(DictionnaryActivity.this, 
                                         jlpt2.class);
                                         ^^^^^^^^^^^^

您需要在Intent的第二个参数中提供下一个活动.class。

答案 4 :(得分:0)

用nameOfClassToBeLaunched.class替换jlpt1.getClass() 在其他活动中创建活动实例也是不好的做法。