2016-07-03 4 views
1

私はgetIntent()を使用しようとするとアンドロイドにあります。メソッドをアンドロイドで使用すると、nullが返され、アプリケーションがクラッシュする原因となります。ここに私のコードです:getIntent nullを返す

public class MainActivity extends AppCompatActivity { 

    public final static String EXTRA_MESSAGE = "com.mycompany.myfirstapp.MESSAGE"; 

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

    public void sendMessage(View view) { 
     Intent intent = new Intent(this, DisplayMessageActivity.class); 
     EditText textbox = (EditText) findViewById(R.id.edit_message); 
     String message = textbox.getText().toString(); 
     intent.putExtra(EXTRA_MESSAGE, message.toString()); 
     startActivity(intent); 
    } 
} 

この最初のアクティビティの呼び出し秒:それはnullを返し、なぜ私は...ない意思を使って自分自身を呼び出しているので、私は、理解していない

public class DisplayMessageActivity extends AppCompatActivity { 

    Intent intent = getIntent(); 


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

     String message = ""; 

     if (intent == null) { 
      Log.d("Intent", "Intent is null :("); 
     } 

     try { 
      message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 
     } catch (Exception e) { 
      Log.d("Message", "Message is null"); 
     } 


     TextView textView = new TextView(this); 
     textView.setText(message); 
     textView.setTextSize(40); 

     RelativeLayout layout = (RelativeLayout) findViewById(R.id.content); 
     layout.addView(textView); 
    } 
} 

ヌル。

EDIT:私はまた、EXTRA_MESSAGEではなく "message"のように、キーの定数以外のものを使用しようとしましたが、同じ結果につながります。

+5

移動 'テントの意図= getIntent();' '内部onCreate'方法 –

+0

うーん...ありがとう。これは私がC#でやっていたことですが、ここではうまくいかないことはわかりませんでした。どうもありがとうございました。 –

+1

コンストラクタが呼び出される前に、オブジェクトが作成されたときに初期化時に発生するようなメソッドの外部のステートメントがあるため、このメソッドは機能しません。その時点で、インテントはオブジェクトにまだ渡されていません。実際には、単純な値(1,2、 "hello"など)の場合のようなイニシャライザを使用するか、新しいオブジェクトを作成する必要があります。関数を呼び出すべきではありません。 –

答えて

1

ヌルの2つの原因があり、後に呼び出されなければなりません。 1)andoridのmanifest.xmlファイルでアクティビティを宣言していない場合。 2)あなたはOnCreate関数内部getIntentを()()メソッドを使用する必要があり、そのことのためのコードはここにある: -

public class DisplayMessageActivity extends AppCompatActivity { 

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

     Intent intent = getIntent(); 


     String message = ""; 

     if (intent == null) { 
      Log.d("Intent", "Intent is null :("); 
     } 

     try { 
      message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 
     } catch (Exception e) { 
      Log.d("Message", "Message is null"); 
     } 


     TextView textView = new TextView(this); 
     textView.setText(message); 
     textView.setTextSize(40); 

     RelativeLayout layout = (RelativeLayout) findViewById(R.id.content); 
     layout.addView(textView); 
    } 
} 
0

getIntent()メソッドsetContentView()メソッド

public class DisplayMessageActivity extends AppCompatActivity { 

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

    Intent intent = getIntent(); 
    String message = ""; 

    if (intent == null) { 
     Log.d("Intent", "Intent is null :("); 
    } 

    try { 
     message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE); 
    } catch (Exception e) { 
     Log.d("Message", "Message is null"); 
    } 


    TextView textView = new TextView(this); 
    textView.setText(message); 
    textView.setTextSize(40); 

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.content); 
    layout.addView(textView); 
} 

}

関連する問題