gpt4 book ai didi

java - 从另一个类调用我的主要 Activity 方法之一返回错误

转载 作者:行者123 更新时间:2023-12-01 09:24:53 24 4
gpt4 key购买 nike

主要 Activity

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent=new Intent(getApplicationContext(),SecondActivity.class);
startActivity(intent);
}


public void function(String data) {
EditText editText=(EditText)findViewById(R.id.EditText);
editText.setText(data);

}

}

这是我的第二项 Activity

public class SecondActivity extends Activity {
MainActivity mainActivity=new MainActivity();
@Override
public void onCreate(Bundle save){
super.onCreate(save);
setContentView(R.layout.layout2);
Button button=(Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String data="SUCCESS!";
mainActivity.function(data);
}
});

}

}

这是错误

10-07 20:56:47.678 11920-11920/wifiexplorer.braveheart.com.classtest E/AndroidRuntime: FATAL EXCEPTION: main
Process: wifiexplorer.braveheart.com.classtest, PID: 11920
java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.Window$Callback android.view.Window.getCallback()' on a null object reference
at android.support.v7.app.AppCompatDelegateImplBase.<init>(AppCompatDelegateImplBase.java:68)
at android.support.v7.app.AppCompatDelegateImplV7.<init>(AppCompatDelegateImplV7.java:145)
at android.support.v7.app.AppCompatDelegateImplV11.<init>(AppCompatDelegateImplV11.java:28)
at android.support.v7.app.AppCompatDelegateImplV14.<init>(AppCompatDelegateImplV14.java:41)
at android.support.v7.app.AppCompatDelegateImplV23.<init>(AppCompatDelegateImplV23.java:29)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:186)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:170)
at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:502)
at android.support.v7.app.AppCompatActivity.findViewById(AppCompatActivity.java:174)
at wifiexplorer.braveheart.com.classtest.MainActivity.function(MainActivity.java:20)
at wifiexplorer.braveheart.com.classtest.SecondActivity$1.onClick(SecondActivity.java:22)
at android.view.View.performClick(View.java:5277)
at android.view.View$PerformClick.run(View.java:21711)
at android.os.Handler.handleCallback(Handler.java:815)
at android.os.Handler.dispatchMessage(Handler.java:104)
at android.os.Looper.loop(Looper.java:207)
at android.app.ActivityThread.main(ActivityThread.java:5896)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:679)

我是 android 编程新手,这里我只是使用 Intent 来调用我的第二个 Activity。

最佳答案

使用此文档 "Getting a Result from an Activity"

您想要更新您的 ui 元素。您的情况的良好做法是使用 startActivityForResult。您的案例中的示例代码:

 public class MainActivity extends AppCompatActivity {

public static final String STRING_RESULT_DATA_KEY = "result_data";

private static final int REQUEST_CODE_SECOND_ACTIVITY = 101;

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

Intent intent = new Intent(this, SecondActivity.class);
startActivityForResult(intent, REQUEST_CODE_SECOND_ACTIVITY);
}

public void function(String data) {
EditText editText=(EditText)findViewById(R.id.EditText);
editText.setText(data);

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Check which request we're responding to
if (requestCode == REQUEST_CODE_SECOND_ACTIVITY) {
// Make sure the request was successful
if (resultCode == RESULT_OK) {
String dataString = data.getStringExtra(STRING_RESULT_DATA_KEY);
function(dataString);
}
}
}
}

第二个 Activity :

public class SecondActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second_activity);
Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String data = "SUCCESS!";
Intent intent = new Intent();
intent.putExtra(MainActivity.STRING_RESULT_DATA_KEY, data);
setResult(RESULT_OK, intent);
finish();
}
});
}
}

关于java - 从另一个类调用我的主要 Activity 方法之一返回错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39920956/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com