2017-03-17 26 views
-1

ホーム画面に5つのボタンを持つアプリケーションを作成しようとしています。各ボタンを押すと、新しいアクティビティがポップアップします。アクティビティを開始できません(java.lang.IllegalStateException:既に接続されています)

私は2番目のボタンを押すのです、それはエラーが表示されます。

**java.lang.RuntimeException: Unable to start activity ComponentInfo{debuggers.os_project/debuggers.os_project.SJF}: java.lang.IllegalStateException: Already attached** 

最初のボタンが正常に動作しています。私はまだ2つのボタンだけをコーディングしています。

マイmain_activity.javaは次のとおりです。

ここ
package debuggers.os_project; 

import android.content.Intent; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends AppCompatActivity { 

private static Button fcfs; 
private static Button sjf; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    fcfs = (Button)findViewById(R.id.fcfs); 
    sjf = (Button) findViewById(R.id.sjf); 
    fcfs.setOnClickListener(
      new Button.OnClickListener(){ 
       @Override 
       public void onClick(View v) { 
        Intent intent = new Intent(v.getContext(), FCFS.class); 
        startActivity(intent); 
       } 
      } 
    ); 
} 

public void onSJF(View view){ 
    Intent intent = new Intent(view.getContext(),SJF.class); 
    startActivity(intent); 
} 
} 
+0

変数に有意義な名前を付けると、コードを読む上で大いに役立ちます。 –

+0

SJFアクティビティのコードを共有します。私は問題がそこにあると思う。これは助けになるかもしれません:http://stackoverflow.com/questions/35384888/java-lang-illegalstateexception-already-attached –

+0

@PavanPatil問題はSJF活動にあったのは間違いありませんでした。ご協力いただきありがとうございます。 –

答えて

0

public void onSJF(View view){ 
    Intent intent = new Intent(MainActivity.this, SJF.class); 
    startActivity(intent); 
} 

新しい活動を開始するには、第二として、最初の引数と次のアクティビティクラスとして現在の活動のクラスを渡しますインテントの新しいインスタンスへの引数!

これが動作するか試してみてください。クリックリスナーに

0

は次のようになります。

fcfs = (Button)findViewById(R.id.fcfs); 
fcfs.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent intent = new Intent(MainActivity.this, FCFS.class); 
     startActivity(intent); 
}); 

そして、あなたのあなたの方法を使用していませんでした。 あなたは一つの方法を構築することができますし、すべてのボタンで使用することができます:

public void method_for_intent (Class your_class){ 
    Intent intent = new Intent(MainActivity.this, your_class); 
    startActivity(intent); 
} 

そして、あなたのonCreateで

は、最終的には次のようになります。

Button fcfs = (Button)findViewById(R.id.fcfs); 
Button sjf = (Button) findViewById(R.id.sjf); 
fcfs.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     method_for_intent(FCFS.class) 
    }); 
sjf.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     method_for_intent(SJF.class) 
    }); 

そして、あなたはあなたの新しいにoncreateを複数回呼ぶかもしれません活動。 IllegalStateException (Already attached) when opening NFC reader app

(あなたはあまりにも法にクリックリスナーであなたを置くことができる) は、コードをテストしていないことがあります。 私は何かが間違っている場合は背が高い。

関連する問題