0

こんばんはスタック!

私は趣味で Android 開発を学び始めました。現在、最初の「本物の」アプリケーションを開発しようとしています (書籍から作成した簡単なアプリケーションは 5 つだけです)。

このアプリケーションには、同じアクティビティを「作成」する 2 つのボタンがありますが、同じ基本クラスの 2 つの異なるオブジェクトを使用するため、クリックされたボタンに応じてアプリケーションの動作をカスタマイズできます。しかし、Intent インスタンスを作成しようとすると、アプリケーションがクラッシュします。

基本アクティビティクラスのコードは次のとおりです

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

1
Maybe:
Intent myIntent = new Intent(DictionnaryActivity.this,   
                                         BaseDictionnaryActivity.class);
startActivity(myIntent);
于 2012-10-09T13:10:32.400 に答える
0

jlpt1.getClass() を NameOfClassToBeLaunched.class に置き換えます。これは、他のアクティビティで Activity インスタンスを作成することもお勧めできません。

于 2012-10-09T13:13:01.693 に答える
0
Intent myIntent = new Intent(DictionnaryActivity.this, 
                                         jlpt2.class);
                                         ^^^^^^^^^^^^

Intent の 2 番目の引数に次のアクティビティ .class を指定する必要があります。

于 2012-10-09T13:09:08.703 に答える