java - 科西嘉实验室问题

标签 java android

嘿大家,我很抱歉,但我必须问这个问题,这似乎是一个非常简单的问题,但我只是卡住了!我花了过去 2 个小时浏览表单和 Android 开发人员资源网站,但我找不到我的代码的问题。 首先,startActivityForResult() 不会向我发送回文本。 每次我单击“隐式激活”按钮时,应用程序都会崩溃。

这是主要 Activity 文件:

public class ActivityLoaderActivity extends Activity {

static private final int GET_TEXT_REQUEST_CODE = 1;
static private final String URL = "http://www.google.com";
static private final String TAG = "Lab-Intents";

// For use with app chooser
static private final String CHOOSER_TEXT = "Load " + URL + " with:";

// TextView that displays user-entered text from ExplicitlyLoadedActivity runs
private TextView mUserTextView;

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

    // Get reference to the textView
    mUserTextView = (TextView) findViewById(R.id.textView1);

    // Declare and setup Explicit Activation button
    Button explicitActivationButton = (Button) findViewById(R.id.explicit_activation_button);
    explicitActivationButton.setOnClickListener(new OnClickListener() {

        // Call startExplicitActivation() when pressed
        @Override
        public void onClick(View v) {

            startExplicitActivation();

        }
    });

    // Declare and setup Implicit Activation button
    Button implicitActivationButton = (Button) findViewById(R.id.implicit_activation_button);
    implicitActivationButton.setOnClickListener(new OnClickListener() {

        // Call startImplicitActivation() when pressed
        @Override
        public void onClick(View v) {

            startImplicitActivation();

        }
    });

}


// Start the ExplicitlyLoadedActivity

private void startExplicitActivation() {

    Log.i(TAG,"Entered startExplicitActivation()");

    // TODO - Create a new intent to launch the ExplicitlyLoadedActivity class
    Intent explicitIntent = new Intent (ActivityLoaderActivity.this, ExplicitlyLoadedActivity.class);
    // TODO - Start an Activity using that intent and the request code defined above
    startActivityForResult(explicitIntent, GET_TEXT_REQUEST_CODE);

}

// Start a Browser Activity to view a web page or its URL

private void startImplicitActivation() {

    Log.i(TAG, "Entered startImplicitActivation()");

    // TODO - Create a base intent for viewing a URL
    // (HINT:  second parameter uses Uri.parse())
    Intent baseIntent = new Intent (Intent.ACTION_VIEW, Uri.parse(URL));

    // TODO - Create a chooser intent, for choosing which Activity
    // will carry out the baseIntent
    // (HINT: Use the Intent class' createChooser() method)
    Intent chooserIntent = null;
    chooserIntent.createChooser(baseIntent, CHOOSER_TEXT);



    Log.i(TAG,"Chooser Intent Action:" + chooserIntent.getAction());


    // TODO - Start the chooser Activity, using the chooser intent
    startActivity(chooserIntent);

}

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

    Log.i(TAG, "Entered onActivityResult()");

    // TODO - Process the result only if this method received both a
    // RESULT_OK result code and a recognized request code
    // If so, update the Textview showing the user-entered text.
    if (resultCode == RESULT_OK){
           mUserTextView.setText(data.getStringExtra("resulttext"));
}}}

这是明确的 Intent 文件:

public class ExplicitlyLoadedActivity extends Activity {

static private final String TAG = "Lab-Intents";

private EditText mEditText;
String resulttext="still waiting";

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

    setContentView(R.layout.explicitly_loaded_activity);

    // Get a reference to the EditText field
    mEditText = (EditText) findViewById(R.id.editText);

    // Declare and setup "Enter" button
    Button enterButton = (Button) findViewById(R.id.enter_button);
    enterButton.setOnClickListener(new OnClickListener() {

        // Call enterClicked() when pressed

        @Override
        public void onClick(View v) {

            enterClicked();

        }
    });

}

// Sets result to send back to calling Activity and finishes

private void enterClicked() {

    Log.i(TAG,"Entered enterClicked()");

    // TODO - Save user provided input from the EditText field
    resulttext= mEditText.getText().toString();
    // TODO - Create a new intent and save the input from the EditText field as an extra
    Intent returntrip = new Intent ();
    returntrip.putExtra("wayback", resulttext);
    // TODO - Set Activity's result with result code RESULT_OK
    setResult(RESULT_OK, returntrip);
    // TODO - Finish the Activity
    finish();
}

}

非常感谢你们,我知道我很麻烦!

最佳答案

您正在发送名为“wayback”的额外数据,而不是“resulttext

 returntrip.putExtra("wayback", resulttext);

这将修复您的代码:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    Log.i(TAG, "Entered onActivityResult()");
    if (resultCode == RESULT_OK){
          mUserTextView.setText(data.getStringExtra("wayback"));
}

关于java - 科西嘉实验室问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28200422/

相关文章:

java - 更改默认的照片选择器 Intent 文本?

android - 加入具有相同主键但不同数据的两个表

android - 如何阻止我的 Android 应用程序在模拟器中崩溃?

java - Android onStartCommand 服务

java - Google AppEngine 不显示网页

java - 我无法获取请求参数的值

java - 如何在 Java Applet 中即时显示图像?

java - 如何让 JVM 使用服务器的最大(全部剩余)内存

android - Recyclerview - 如何在项目滑动时禁用垂直滚动 (fling)

Android Firebase DynamiteModule : Failed to load module descriptor