2

나는 developer.android.com에서 코드를 작성했으며 몇 가지 문제점이 있습니다.developer.android.com - 내 첫 번째 앱/안녕하세요 세계

먼저 MainActivity.java 파일에서 노란색 줄이있는 "message"를 표시합니다.

둘째, 코드에 오류가 없지만 응용 프로그램을 실행하면 텍스트 상자에 "false"라고 표시되고 버튼에 "false"캡션이 있습니다. 버튼을 누르면 아무 일도 일어나지 않습니다. 누군가 나를 도울 수 있습니까?

MainActivity.java :

package com.example.myfirstapp; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 

public class MainActivity extends Activity { 

    public static final String EXTRA_MESSAGE = null; 
    private static final String message = null; 

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

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


    } 
} 

activity_main.xml :

<?xml version="1.0" encoding="utf-8"?> 
<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" /> 
</LinearLayout> 

DisplayMessageActivity.java :

package com.example.myfirstapp; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.widget.TextView; 

public class DisplayMessageActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_display_message); 

     //Get the message from the intent 
     Intent intent = getIntent(); 
     String message = intent.getStringExtra(MainActivity.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); 
    } 


} 

MyFirstApp 매니페스트 :

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.myfirstapp" 
    android:versionCode="1" 
    android:versionName="1.0" > 

    <uses-sdk 
     android:minSdkVersion="8" 
     android:targetSdkVersion="15" /> 

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/title_activity_main" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".DisplayMessageActivity" 
      android:label="@string/title_activity_display_message" > 
      <meta-data 
       android:name="android.support.PARENT_ACTIVITY" 
       android:value="com.example.myfirstapp.MainActivity" /> 
     </activity> 
    </application> 

</manifest> 

도우미에게 정말 감사드립니다.


지금이 코드입니다 :

MainActivity.java :

package com.example.myfirstapp; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.EditText; 

public class MainActivity extends Activity { 

    public static final String EXTRA_MESSAGE = null; 

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

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


    } 
} 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<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" /> 
</LinearLayout> 

답변

3

당신은 그의 로컬 복사본에 메시지를 설정하는 변하기 쉬운. 대신 정적 변수에 할당해야합니다. 이 경고는 지역 변수가 선언 된 후에 사용되지 않기 때문에 발생합니다. 해결하려면 당신은 String 키워드를 제거 할 수 있습니다

message = editText.getText().toString(); 
1

최종 목적 (귀하의 경우 String를) reaffected 할 수 없습니다. 귀하의 경우, 그것은 항상 null이된다는 것을 의미합니다. Eclipse에서 이해할 수없는 경고입니다.

그런 다음 앱에 몇 가지 순서 문제가 있습니다. 의도하지 않은 결과를 전송 한 후 EditText 에서 값을 가져 오는 중입니다.

그런 다음 그림자가 있습니다. 개인 변수를 숨기는 메시지 문자열을 선언하고 있습니다.

텍스트는 @ + string/edit_message에 + 필요가 없습니다. +는 요소가 명시 적으로 선언되지 않았 음을 의미합니다. 텍스트를 명시 적으로 선언해야합니다. 그렇지 않으면 해당 값이 의미가 없습니다.

또한 사용하는 EXTRA 키는 임의적입니다 (즉, 원하는 값을 지정할 수 있음). 그러나 null은 좋은 값이 아닙니다.메시지 변수 assing 전에 코딩을 시작 활동

+0

내가했던 당신이 programm에 대해 말한 것을 다음과 같은 방법을 사용하여 메시지 를 보여주고,하지 않습니다 이제 다른 문제가 생겼습니다 : 줄이 android : text = "@ string/button_send" 및 android : hint = "@ string/edit_message"오류가 발생했습니다. 두 번째로 여기에 "message"에 빨간색으로 표시됩니다. intent.putExtra (EXTRA_MESSAGE, message); 이해가 안됩니다. 저를 도와주세요. – IdoShamriz

+0

edit_message 및 button_send 문자열이 정의 된 XML 파일이 있습니까? – njzk2

6
  • 그렇게 만 그렇게

    Intent intent = new Intent(this, DisplayMessageActivity.class); 
        intent.putExtra(EXTRA_MESSAGE, message); 
        EditText editText = (EditText) findViewById(R.id.edit_message); 
        String message = editText.getText().toString(); 
        startActivity(intent); 
    
관련 문제