2013-04-16 2 views
3

기본적으로 2 가지 활동으로 구성된 응용 프로그램을 만들려고합니다. 활동 1에서 사용자는 2 개의 별도 편집 텍스트 필드에 2 개의 값을 입력 할 수 있으며 두 개의 값 중 하나를 선택할 수있는 회 전자 드롭 다운 항목을 제공했습니다.의도 및 텍스트 문제 편집

사용자가 옵션을 1로 선택하고 제출 버튼을 클릭하면 이전 작업의 스피너 객체에서 선택한 ID에 따라 값이 표시된 두 번째 액티비티가 표시됩니다.

사용자가 1을 선택하면 첫 번째 편집 텍스트 상자의 값이 표시되고 2를 선택하면 두 번째 편집 텍스트 상자 값이 표시됩니다.

또한 사용자가 두 번째 활동의 제출 버튼을 클릭하면 두 번째 활동의 편집 텍스트 필드에 입력 한 값에 따라 이전 활동의 편집 텍스트 상자 1 또는 편집 텍스트 상자 2에 표시됩니다.

왜 내 앱이 기괴한 행동을 보이는지 이해하는 데 문제가 있습니다. 나를 안내 해줘.

FIRST 활동의 FILE :

package spinnner.intents.understand; 

    import android.app.Activity; 
    import android.content.Context; 
    import android.content.Intent; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.view.inputmethod.InputMethodManager; 
    import android.widget.AdapterView; 
    import android.widget.ArrayAdapter; 
    import android.widget.EditText; 
    import android.widget.Spinner; 
    import android.widget.TextView; 
    import android.widget.Toast; 
    import android.widget.AdapterView.OnItemSelectedListener; 

    public class TwoAppsActivity extends Activity { 
     /** Called when the activity is first created. */ 
     String [] items = {"1","2"}; 
     //String ch; 
     TextView tv; 
     EditText et1,et2; 
     Spinner spinner;  
     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 

      tv=(TextView) findViewById(R.id.txt); 
      et1=(EditText) findViewById(R.id.edittxt1); // value 1 
      et2=(EditText) findViewById(R.id.edittxt2); // value 2 
      spinner=(Spinner) findViewById(R.id.spin1); // select 

      // 

      Intent i3 = getIntent(); 
      if(i3.getStringExtra("spinner.intents.understand.value1")!=null) 
      { 
       et1.setText(i3.getStringExtra("spinner.intents.understand.value1")); 
      } 
      else if(i3.getStringExtra("spinner.intents.understand.value2")!=null) 
      { 
       et2.setText(i3.getStringExtra("spinner.intents.understand.value2")); 
      } 
      else 
      { 
       Toast.makeText(getApplicationContext(), "Enter some text ", Toast.LENGTH_LONG).show(); 
      } 

     // spinner logic 
      ArrayAdapter<String> as1 = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_spinner_dropdown_item, items); 
      as1.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
      spinner.setAdapter(as1); 
      spinner.setOnItemSelectedListener(new OnItemSelectedListener() { 

       public void onItemSelected(AdapterView<?> arg0, View arg1, 
         int arg2, long arg3) { 
        // TODO Auto-generated method stub 
        tv.setText(items[arg2]); 
        Toast.makeText(getApplicationContext(), " You selected : "+items[arg2],Toast.LENGTH_LONG).show(); 
       } 

       public void onNothingSelected(AdapterView<?> arg0) { 
        // TODO Auto-generated method stub 
        Toast.makeText(getApplicationContext(), "You selected nothing", Toast.LENGTH_LONG).show(); 
       } 
      }); 

      // 
     } 

     public void Submit(View v) 
     { 
      Intent i = new Intent(this,Second.class); 
      startActivity(i); 



      //str1 = et1.getText().toString(); 
      //Toast.makeText(getApplicationContext(), str1, Toast.LENGTH_LONG).show(); 

     // str2 = et2.getText().toString(); 
      //Toast.makeText(getApplicationContext(), str2, Toast.LENGTH_LONG).show(); 

      // 




      if(spinner.getSelectedItem().toString()=="1") 
      { 
       Toast.makeText(getApplicationContext(), "I am in 1st option", Toast.LENGTH_LONG).show(); 
       i.putExtra("spinner.intents.understand.value1", et1.getEditableText().toString()); 
       i.putExtra("spinner.intents.understand.Id1", "1"); 
      } 
      else if(spinner.getSelectedItem().toString()=="2") 
      { 
       Toast.makeText(getApplicationContext(), "I am in 2nd option", Toast.LENGTH_LONG).show(); 
       i.putExtra("spinner.intents.understand.value2", et2.getEditableText().toString()); 
       i.putExtra("spinner.intents.understand.Id2", "2"); 
      } 
      else 
      { 
       Toast.makeText(getApplicationContext(), "You selected nothing!!!", Toast.LENGTH_LONG).show(); 
      } 



     } 
    } 

SECOND 활동의 FILE

package spinnner.intents.understand; 

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

    public class Second extends Activity{ 
      /** Called when the activity is first created. */ 
      TextView Tv; 
      EditText Et; 
      @Override 
      public void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.second); 
       // 
       Tv=(TextView) findViewById(R.id.txtS1); 
       Et=(EditText) findViewById(R.id.edittxtS1); 
       // 

       Intent i1 = getIntent();        

       if((i1.getStringExtra("spinner.intents.understand.Id1"))=="1") 
       { 
        Toast.makeText(getApplicationContext(), "I am in value 1", Toast.LENGTH_LONG).show();    
        Et.setText(i1.getStringExtra("spinner.intents.understand.value1"));    
       }   
       else if((i1.getStringExtra("spinner.intents.understand.Id2"))=="2") 
       { 
        Toast.makeText(getApplicationContext(), "I am in value 2", Toast.LENGTH_LONG).show(); 
        Et.setText(i1.getStringExtra("spinner.intents.understand.value2")); 
       } 
       else 
       { 
        Toast.makeText(getApplicationContext(), "Some mismatch", Toast.LENGTH_SHORT).show(); 
       } 

      } 

      public void submit(View v) 
      { 
       Intent i2 = new Intent(this,TwoAppsActivity.class); 
       startActivity(i2); 
       if(i2.getStringExtra("Id1")=="1") 
       { 
        i2.putExtra("spinner.intents.understand.value1", Et.getEditableText().toString()); 

       } 
       else if(i2.getStringExtra("Id2")=="2") 
       { 
        i2.putExtra("spinner.intents.understand.value2", Et.getEditableText().toString()); 

       } 
       else 
       { 
        Toast.makeText(getApplicationContext(), "No data to display", Toast.LENGTH_LONG).show(); 
       } 
      } 
    } 

main.xml에

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/txt" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/hello" /> 

    <TextView 
     android:id="@+id/txt1" 
     android:text="Enter value 1:" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <EditText 
     android:id="@+id/edittxt1" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 

    <TextView 
     android:id="@+id/txt2" 
     android:text="Enter value 2:" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

    <EditText 
     android:id="@+id/edittxt2" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 

    <TextView 
     android:id="@+id/txt3" 
     android:text="Select" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 

    <Spinner 
     android:id="@+id/spin1"   
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

    <Button 
     android:id="@+id/btnsubmit1" 
     android:text="Submit" 
     android:onClick="Submit" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 

</LinearLayout> 

SECOND 활동 XML 파일

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/txtS1" 
     android:text="Value:" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 

    <EditText 
     android:id="@+id/edittxtS1"   
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 

    <Button 
     android:id="@+id/btnsubmit2" 
     android:text="Submit" 
     android:onClick="submit" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 

</LinearLayout> 
,691 363,210

안드로이드 매니페스트 XML 파일

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="spinnner.intents.understand" 
    android:versionCode="1" 
    android:versionName="1.0" > 

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

    <application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" > 
     <activity 
      android:name=".TwoAppsActivity" 
      android:label="@string/app_name" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".Second">    
     </activity> 
    </application> 

</manifest> 

나는 또한 내 코드가 너무 엉망 것 같으면 내 프로젝트를 우편으로 기꺼이.

답변

0

두 개의 문자열을 비교할 때는 == 또는! =를 사용하지 마십시오. 대신 동등 물 사용 :

if(spinner.getSelectedItem().toString().equals("1")) 

감사합니다.

+0

귀하의 제안을 시도했지만 여전히 내 앱이 기괴한 행동을 보여줍니다. 제대로 작동하지 않는다는 것을 의미합니다. – user2285161

+0

나는 equals을 사용할 때 첫 번째 활동이 작동하지만 submit을 클릭하면 다음 활동으로 넘어 가지 않지만 강제 종료합니다. : – user2285161

+0

또 다른 문제는 추가 작업을 시작하기 전에 startActivity()를 호출하여 새 작업이이를받을 수 없으므로 uncaughted NullPointerException이 발생하여 응용 프로그램이 손상되는 것입니다. – eltabo