0

晚上好堆栈!

我已经开始将学习 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();
     }
}

感谢您的帮助 !

4

5 回答 5

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>
于 2012-10-09T13:07:14.723 回答
1
Maybe:
Intent myIntent = new Intent(DictionnaryActivity.this,   
                                         BaseDictionnaryActivity.class);
startActivity(myIntent);
于 2012-10-09T13:10:32.400 回答
0

改变这个

 Intent myIntent = new Intent(DictionnaryActivity.this, 
                                             NextActivity.class);
于 2012-10-09T13:06:47.613 回答
0
Intent myIntent = new Intent(DictionnaryActivity.this, 
                                         jlpt2.class);
                                         ^^^^^^^^^^^^

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

于 2012-10-09T13:09:08.703 回答
0

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

于 2012-10-09T13:13:01.693 回答