1

Ich bin neu in Android und versuche nur herauszufinden, wie man mit der Methode onActivityResult arbeitet. Ich möchte auf mainActivity klicken, zu einer anderen Aktivität gehen, Namen eingeben und zu mainActivity zurückkehren. Aber ich habe Probleme mit der App. Ich habe immer diese Fehlermeldung erhalten:Kann keine andere Aktivität mit Intent aufrufen

java.lang.NullPointerException: Attempt to invoke virtual method...

09-20 22:14:32.212 30617-30617/com.genaepic.p029_simpleactivityresult E/AndroidRuntime: 

FATAL EXCEPTION: main Process: com.genaepic.p029_simpleactivityresult, PID: 30617 java.lang.RuntimeException: Unable to start activity ComponentInfo{com.genaepic.p029_simpleactivityresult/com.genaepic.p029_simpleactivityresult.NameActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2665) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726) at android.app.ActivityThread.-wrap12(ActivityThread.java) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6119) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776) Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference at com.genaepic.p029_simpleactivityresult.NameActivity.onCreate(NameActivity.java:22) at android.app.Activity.performCreate(Activity.java:6679) at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2618) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2726)  at android.app.ActivityThread.-wrap12(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1477)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:154)  at android.app.ActivityThread.main(ActivityThread.java:6119)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

Meine Haupttätigkeit:

public class MainActivity extends AppCompatActivity implements View.OnClickListener { 

    TextView textView; 
    Button button; 


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

     textView = (TextView) findViewById(R.id.tv_main); 
     button = (Button) findViewById(R.id.btn_iputName); 
     button.setOnClickListener(this); 
    } 

    @Override 
    public void onClick(View v) { 
     Intent intent = new Intent(this, NameActivity.class); 
     startActivityForResult(intent, 1); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     if(data == null) { 
      return; 
     } 
     String name = data.getStringExtra("name"); 
     textView.setText("Your name is " + name); 
    } 
} 

Meine zweite Aktivität:

public class NameActivity extends AppCompatActivity implements View.OnClickListener { 

EditText editText; 
Button button; 

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

    editText = (EditText) findViewById(R.id.et_name); 
    button = (Button) findViewById(R.id.btn_iputName); 
    button.setOnClickListener(this); 
} 

@Override 
public void onClick(View v) { 
    Intent intent = new Intent(); 
    intent.putExtra("name", editText.getText().toString()); 
    setResult(RESULT_OK, intent); 
    finish(); 
} 

}

Mein xml-Code für mainActivity:

<Button 
    android:id="@+id/btn_iputName" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="input your name" 
    tools:layout_constraintTop_creator="1" 
    android:layout_marginStart="34dp" 
    android:layout_marginTop="92dp" 
    tools:layout_constraintLeft_creator="1" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    android:layout_marginLeft="34dp" /> 

<TextView 
    android:id="@+id/tv_main" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Your name is" 
    tools:layout_constraintTop_creator="1" 
    android:layout_marginStart="34dp" 
    android:layout_marginTop="33dp" 
    tools:layout_constraintLeft_creator="1" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintTop_toTopOf="parent" 
    android:layout_marginLeft="34dp" /> 

Mein xml-Code für NameActivity

<Button 
     android:id="@+id/btn_ok" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="116dp" 
     android:text="ok" 
     app:layout_constraintLeft_toLeftOf="parent" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     tools:layout_constraintLeft_creator="1" 
     tools:layout_constraintRight_creator="1" 
     tools:layout_constraintTop_creator="1" /> 

    <EditText 
     android:id="@+id/et_name" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_marginEnd="64dp" 
     android:layout_marginRight="84dp" 
     android:layout_marginTop="31dp" 
     android:ems="10" 
     android:inputType="textPersonName" 
     android:text="Name" 
     app:layout_constraintRight_toRightOf="parent" 
     app:layout_constraintTop_toTopOf="parent" 
     tools:layout_constraintRight_creator="1" 
     tools:layout_constraintTop_creator="1" /> 
</android.support.constraint.ConstraintLayout> 
+0

Sie können eine Antwort mit dem Häkchen neben einem von ihnen akzeptieren –

Antwort

3

Sie haben

setContentView(R.layout.activity_name) 

Also das

button = (Button) findViewById(R.id.btn_iputName) 

zu

button = (Button) findViewById(R.id.btn_ok); 

ändernsucht in der aktuellen Ansichtshierarchie nach Ansichten mit ID. Also, wenn Sie setContentView(R.layout.activity_name) haben, sollten Sie ID in Ihrem activity_name.xml nachschlagen.

+0

Sie haben Recht. Vielen Dank) –

2

In Ihrer NameActivity gibt es keinen Button Button = (Button) findViewById (R.id.btn_iputName); Stattdessen ist es in MainActivity und Sie finden in der NameActivity, wegen der beim Starten von Name Aktivität gibt es NullPointerException.

+0

Vielen Dank, es funktioniert für mich –

1

Falsche ID für Button verwendet

In Ihrer zweiten Aktivität dh NameActivity.java Sie benötigen

button = (Button) findViewById(R.id.btn_iputName); 

mit

button = (Button) findViewById(R.id.btn_ok); 

These changes will resolve the NullPointerException and your app will work properly.

+0

Danke Mann, es half –

4

Sie setContentView(R.layout.activity_name) in NameActivity tun zu ersetzen und dann button = (Button) findViewById(R.id.btn_iputName) welches vorhanden ist in einer anderen Aktivität.

button = (Button) findViewById(R.id.btn_iputName); 
Ändern Sie einfach

zu

button = (Button) findViewById(R.id.btn_ok); 

es wird für Sie arbeiten.

+0

Vielen Dank für Feedback. Es war hilfreich –

Verwandte Themen