2016-07-17 9 views
0

2番目のアクティビティを開くボタンを作成しようとしています。私はインテントで見つけることができるチュートリアルを見てきましたが、私はそれらを正しく追いかけていましたが、明らかに私はそうではありませんでした。インテントコンストラクタで何が問題になっているのですか

NewScreenActivityは完全に空白です。インテントコンストラクタで何が問題になっていますか、それをどうすれば正しく行うことができますか? 「これは」新しいOnClickerListener匿名クラスを参照するためですが、この場合は「この」で新しいインテント()を使用することはできません

//NewScreenActivity in same package 
package com.example.intri.firstexample; 

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

public class MainActivity extends AppCompatActivity { 

    TextView userText; 
    Button buttonToNewScreen; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     userText = (TextView) findViewById(R.id.userText); 
     buttonToNewScreen = (Button) findViewById(R.id.buttonToNewScreen); 
     userText.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       String input = userText.getText().toString(); 
       Intent toNewScreen = new Intent(this, NewScreenActivity.class); 

      } 
     }); 
    } 
} 

おかげ

+0

'onClick()'メソッドの 'this'は、あなたが作成した匿名の' OnClickListener'クラスが 'setOnClickListener(new View.OnClickListener(){/*....*/});'を参照しています。それがエラーを起こす理由です。 –

答えて

2
userText.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       String input = userText.getText().toString(); 
       Intent toNewScreen = new Intent(this, NewScreenActivity.class); 

      } 
     }); 

。 "this"の代わりに、getApplicationContext()のようなものを呼び出す必要があります。あなたのアクティビティを参照したい場合は、openNewActivity()(またはそのようなもの)という名前のメソッドを記述し、そこから開始します。

+1

全体として、 'MainActivity.this'は' getApplicationContext() 'よりも良い推奨です。特定の理由がある場合にのみ、 'Application'コンテキストを使用してください。 – CommonsWare

+0

ありがとう!それはうまくいった。 – user2465510

1

あなたのコードがコンパイルべきではない、のようになり、正しいコードは次のとおりです。

Intent intent = new Intent(MainActivity.this, NewScreenActivity.class); 
startActivity(intent); 

あなたの空白の活動の問題は全く別の問題かもしれません。インテントでデータを渡したい場合は、Intent.putExtraファミリの関数を使用します。

-1

もちろん、インテントでデータを送信していないため、空白です。意図は別のアクティビティを開くだけです。あなたはエクストラを使うべきです。

String input = userText.getText().toString(); 
Intent toNewScreen = new Intent(MainActivity.this, NewScreenActivity.class); 
toNewScreen.putExtra("data", input); 
startActivity(toNewScreen); 
0

インラインでOnCLickListenerを使用します。 Intent内の「this」はclickListenerを参照します。だから、アクティビティ名を指定する必要があり、後であなたは、これが動作するかどうか、私に教えてください活動

Intent toNewScreen = new Intent(MainActivity.this, NewScreenActivity.class); 
 
startActivity(toNewScreen);

を開始する必要があります。

関連する問題