2017-09-27 16 views
-2

MainActivityで画像をクリックすると、NewActivityが表示されます。このNewActivityにチェックボックスが1つあり、Chekboxをクリックしたときに、MainActivityを再度表示してNewActivityを非表示にしたいとします。私はこれを以下のようにしていますが、動作していないと、 "app has stopped"と表示されます。アプリケーションが新しいアクティビティの開始を停止しました

MainActivity:

public class MainActivity extends AppCompatActivity { 
    String mName = "none"; 
    int mSpinnerPos = 0; 




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


     Spinner spinner = (Spinner) findViewById(R.id.spinner2); 
     String string = String.valueOf(spinner.getSelectedItem()); 




     final ImageView image = (ImageView)findViewById(R.id.image); 

     final TextView txt = (TextView) findViewById(R.id.textView4); 



     spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { 
      @Override 
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
       switch (position) { 
        case 0: 
         mSpinnerPos = 0; 
         txt.setText(R.string.item_0); 
         image.setImageResource(R.drawable.bg); 
         break; 
        case 1: 
         mSpinnerPos = 1; 
         txt.setText(String.format(getString(R.string.item_1), mName)); 
         image.setImageResource(R.drawable.item1); 
         break; 
        case 2: 
         mSpinnerPos = 2; 
         txt.setText(String.format(getString(R.string.item_2), mName)); 
         image.setImageResource(R.drawable.item2); 
         break; 
        default: 
         //Default image 
         //image.setImageResource(R.drawable.item2); 
         break; 

       } 
      } 

      @Override 
      public void onNothingSelected(AdapterView<?> parent) { 

      } 
     }); 

    } 

    public void addName(View view) { 
     EditText editext = (EditText) findViewById(R.id.editText2); 
     mName = editext.getText().toString(); 

     TextView txt = (TextView) findViewById(R.id.textView4); 
     switch (mSpinnerPos) { 
      case 0: 
       //nothing to do 
       break; 
      case 1: 
       txt.setText(String.format(getString(R.string.item_1), mName)); 
       break; 
      case 2: 
       txt.setText(String.format(getString(R.string.item_2), mName)); 
       break; 
     } 
    } 
    public void newActivity(View view) { 
     Intent intent = new Intent(this, NewActivity.class); 
     startActivity(intent); 
    } 



} 

NewActivity:

public class NewActivity extends AppCompatActivity { 

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

      final CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox); 
      if (checkBox.isChecked()) { 
       Log.d("Pass", "pass"); 
      } 
     } 

     public void onCheckboxClicked(View view) { 
      // Is the view now checked? 
      boolean checked = ((CheckBox) view).isChecked(); 

      if(checked){ 
       Intent intent = new Intent(NewActivity.this, MainActivity.class); 
       startActivity(intent); 
       this.finish(); 
      } 
     } 


    } 

ログイン:それはdosen」場合

java.lang.IllegalStateException: Could not find method onCheckBoxClicked(View) in a parent or ancestor Context for android:onClick attribute defined on view class android.support.v7.widget.AppCompatCheckBox with id 'checkBox' 
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.resolveMethod(AppCompatViewInflater.java:327) 
                      at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:284) 
                      at android.view.View.performClick(View.java:5637) 
                      at android.widget.CompoundButton.performClick(CompoundButton.java:122) 
                      at android.view.View$PerformClick.run(View.java:22429) 
                      at android.os.Handler.handleCallback(Handler.java:751) 
                      at android.os.Handler.dispatchMessage(Handler.java:95) 
                      at android.os.Looper.loop(Looper.java:154) 
                      at android.app.ActivityThread.main(ActivityThread.java:6119) 
                      at java.lang.reflect.Method.invoke(Native Method) 
                      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) 
                      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) 
+0

何が起こっているかを伝えるためにlogcatの出力を確認する必要があります。「アプリが停止しました」というメッセージは、問題が何であるかについては何も教えてくれません。 – csmckelvey

答えて

0

が... ...のonCreateメソッド内でこのコードを試してみてください、それが動作を願っていますlogcatメッセージをコピーしてください。

final CheckBox checkBox = (CheckBox) findViewById(R.id.checkBox); 
checkBox .setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 

      if (isChecked) { 
       Intent intent = new Intent(NewActivity.this, MainActivity.class); 
      startActivity(intent); 
      finish(); 
      } 
     } 
    }); 
関連する問題