2015-08-29 3 views
2

Я запустил приложение и написал в него текст и нажал отправить. Это должно вывести «Hello World!» но приложение просто падает каждый раз. Если есть что-то еще, что я могу предоставить, я могу это сделать. Это мой первый опыт обучения коду, поэтому я не знаю, где я могу ошибиться. Спасибо!Проблемы с созданием второго действия

Это мой MyActivity.java:

public class MyActivity extends AppCompatActivity { 
public final static String EXTRA_MESSAGE = "anatol.healthygaming.MESSAGE"; 
/** Called when the user clicks the Send button */ 
public void sendMessage(View view) { 
    Intent intent = new Intent(this, DisplayMessageActivity.class); 
    EditText editText = (EditText) findViewById(R.id.edit_message); 
    String message = editText.getText().toString(); 
    intent.putExtra(EXTRA_MESSAGE, message); 
    startActivity(intent); 

} 



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

@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_my, 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); 
} 
} 

Это мой DisplayMessageActivity.java:

public class DisplayMessageActivity extends AppCompatActivity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // Get the message from the intent 
    Intent intent = getIntent(); 
    String message = intent.getStringExtra(MyActivity.EXTRA_MESSAGE); 

    // Create the text view 
    TextView textView = new TextView(this); 
    textView.setTextSize(40); 
    textView.setText(message); 

    // Set the text view as the activity layout 
    setContentView(textView); 
} 



@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); 
} 
} 

Он говорит, что это было вызвано:

Caused by: java.lang.reflect.InvocationTargetException 
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.text.Editable android.widget.EditText.getText()' on a null object reference 

Activity_my:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="horizontal"> 
<EditText android.id="@+id/edit_message" 
    android:layout_weight="1" 
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:hint="@string/edit_message" /> 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/button_send" 
    android:onClick="sendMessage"/> 

Activity_display_message:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" 
tools:context="anatol.healthygaming.DisplayMessageActivity"> 

<TextView android:text="@string/hello_world" android:layout_width="wrap_content" 
    android:layout_height="wrap_content" /> 

+0

Показать файл манифеста android и файлы файлов xml мероприятий, пожалуйста. –

+0

показать ваш файл макета 'activity_my' –

+0

Добавлен Activity_my –

ответ

1

EditText в файле activity_my.xml имеет android.id. Измените его на android:id, и он должен решить вашу проблему.

Причина:
Поскольку android.id недопустим в андроид-XML, то EditText не имеет идентификатора. Когда вы были
EditText editText = (EditText) findViewById(R.id.edit_message);
в MyActivity.java, компилятор не смог найти R.id.edit_message, потому что не существует, поэтому editText было дано значение null.

0

Да, кроме того, что Kritixi Lithos сказал, что вы также должны включить свою активность в файл манифеста Android, если вы этого не сделали.

Смежные вопросы