2

私は構造を持っています:

@Override
public void onListItemClick(ListView l, View v, int position, long id) {
    super.onListItemClick(l, v, position, id);
    if(getActivity() != null)
        Intent intenta = StatisticsActivity.newInstance(this, (Question)mStream.get(position));
    startActivity(intenta);
}

問題があります

(Intent intenta = StatisticsActivity.newInstance(this, (Question)mStream.get(position))):
The method newInstance(Activity, Question) in the type StatisticsActivity is not applicable for the arguments (UserQuestionsFragment, Question).

newInstance:

public static Intent newInstance(Activity activity, Question question) {
    Intent intent = new Intent(activity, StatisticsActivity.class);
    intent.putExtra(QUESTION_KEY, question);
    return intent;
}

Eclipseは変更を提供しますnewInstance

public static Intent newInstance(UserQuestionsFragment userQuestionsFragment, Question question) {

    Intent intent = new Intent(userQuestionsFragment, StatisticsActivity.class);
    intent.putExtra(QUESTION_KEY, question);
    return intent;
}

ただし、エラーも発生します。何が可能ですか?前もって感謝します

4

2 に答える 2

2

AndroidのIntentコンストラクターは (UserQuestionFragments, XXX ) を引数として取りません。

コンストラクタは次のとおりです。

Intent()
Create an empty intent.

Intent(Intent o)
Copy constructor.

Intent(String action)
Create an intent with a given action.

Intent(String action, Uri uri)
Create an intent with a given action and for a given data url.

Intent(Context packageContext, Class<?> cls)
Create an intent for a specific component.

Intent(String action, Uri uri, Context packageContext, Class<?> cls)
Create an intent for a specific component with a specified action and data.

お役に立てれば。

于 2013-08-13T16:43:08.170 に答える
1

メソッドに渡そうとしていますFragmentnewInstance()、期待していActivityます。pre-eclipse-suggestion バージョンでは、これを変更します

if(getActivity() != null)
    Intent intenta = StatisticsActivity.newInstance(this, (Question)mStream.get(position));
// Also, this line should be giving you a compiler error
// because you created intenta inside if clause, so
// it's not visible here
startActivity(intenta);

これに

Activity curActivity = getActivity();
if(curActivity != null) {
    Intent intenta = StatisticsActivity.newInstance(
    /* this is where the change is -> */ curActivity, (Question)mStream.get(position));
    startActivity(intenta);
}
于 2013-08-13T16:44:08.657 に答える