2015-10-18 4 views
0

Итак, у меня есть две основные части; MainActivity и SecondaryActivity. Я создал кнопку MainActivity, которая привела бы к SecondaryActivity и отправила/отобразила сообщение. Кнопка перенаправляет на SecondaryActivity, но сообщение не отправляется/показывается. Я думаю, что это может иметь отношение к использованию getIntent(), но я не уверен. Я новичок в этом!Ошибка выполнения Studio Studio Intent

MainActivity:

package divadi.hour2application; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 
    Button activityButton = (Button) findViewById(R.id.button); 
     activityButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       //add code here for button click 
       Intent startIntent = new Intent(getApplicationContext(),SecondaryActivity.class); 
       startIntent.putExtra("com.talkingandroid,MESSAGE","Hello SecondaryActivity"); 
       startActivity(startIntent); 
      } 
     }); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 
} 

SecondaryActivity:

package divadi.hour2application; 

import android.content.Intent; 
import android.os.Bundle; 
import android.support.design.widget.FloatingActionButton; 
import android.support.design.widget.Snackbar; 
import android.support.v7.app.AppCompatActivity; 
import android.support.v7.widget.Toolbar; 
import android.view.View; 
import android.widget.TextView; 

public class SecondaryActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_secondary); 
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 

    Intent intent = getIntent(); 
    String message = intent.getStringExtra("com.talkingandroid.MESSAGE"); 
    TextView messageTextView = (TextView) findViewById(R.id.message); 
    messageTextView.setText(message); 

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); 
    fab.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) 
        .setAction("Action", null).show(); 
     } 
    }); 
} 

} 

Спасибо заранее!

+2

У вас есть «,» при отправке, но «.». при получении – codeMagic

ответ

0

Ваше близкое. Вы просто замаскировали ключ, когда вкладываете значение в намерение.

Здесь мы посылаем com.talkingandroid,MESSAGE Примечание ,

startIntent.putExtra("com.talkingandroid,MESSAGE","Hello SecondaryActivity"); 

и в следующей деятельности мы ищем ту же строку, но с .

String message = intent.getStringExtra("com.talkingandroid.MESSAGE"); 

Если вы просто создать public static final String MESSAGE_KEY = "myMessageKey"; где-то можно избегайте этого в будущем.

+0

Ahhh Я полностью пропустил это! Большое вам спасибо за вашу помощь, но еще один вопрос: будет ли код работать, если я изменил «намерение намерения = getIntent();» to 'Intent = getIntent();' и капитализировать намерение на следующей строке? – Divadi

+0

Intent = getIntent(); String message = Intent.getStringExtra ("com.talkingandroid.MESSAGE"); Так было написано в книге, но я продолжаю получать ошибку «не могу найти символьную переменную Intent». Как это исправить? – Divadi

+0

Вы не можете капитулировать второй «умысел». Когда вы это сделаете, он найдет класс «Intent» вместо вашей переменной. метод «Intent # getStringExtra» не является статическим, поэтому вы не можете получить к нему доступ через ссылку класса «Intent» – JBirdVegas