【问题标题】:implements TopSectionFragment Cannot resolve symbol android studio实现 TopSectionFragment 无法解析符号 android studio
【发布时间】:2016-05-24 08:07:14
【问题描述】:
public class MainActivity extends AppCompatActivity implements
    TopSectionFragment.TopSectionListener {

当我尝试实现 TopSectionFragment 时,文字变为红色,然后当我的鼠标移过它时,它会显示 Cannot resolve symbol

这一切都发生在 Android Studio 中。

我的 MainActivity.java 如下所示:

package com.example.danielhunter.fragments;

import android.support.v7.app.AppCompatActivity;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;`


public class MainActivity extends AppCompatActivity
    implements TopSectionFragment.TopSectionListener {

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

我的 TopSectionFragment.java 看起来像这样:

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.view.ViewGroup;
import android.view.View;
import android.view.LayoutInflater;
import android.support.v4.app.Fragment;
import android.widget.Button;
import android.widget.EditText;
import android.app.Activity;

import com.example.danielhunter.fragments.R;


public class TopSectionFragment extends Fragment {

private static EditText topTextInput;
private static EditText bottomTextInput;

TopSectionListener activityCommander;

    public interface TopSectionListener{
    public void createMeme(String top,String bottom);


    }


    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try{
        activityCommander = (TopSectionListener) activity;

        }catch (ClassCastException e){
            throw new ClassCastException(activity.toString());
        }



    }

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.top_section_fragment, container, false);

        topTextInput = (EditText) view.findViewById(R.id.topTextInput);
        bottomTextInput = (EditText) view.findViewById(R.id.bottomTextInput);

        final Button button = (Button) view.findViewById(R.id.button);


        button.setOnClickListener(
                new View.OnClickListener(){
                    public void onClick(View v){
                        buttonClicked(v);


                    }
                }
        );



        return view;



    }
    // calls this when the button is clicked
    public void buttonClicked(View view){
    activityCommander.createMeme(topTextInput.getText().toString(), bottomTextInput.getText().toString());

    }

    }

【问题讨论】:

    标签: java android implements


    【解决方案1】:

    为了让一个类正确实现一个接口,它必须包含接口中定义的所有方法的实现。在您的情况下,MainActivity 需要有一个带有签名 void createMeme(String top,String bottom) 的方法才能编译。

    【讨论】:

    • 在 MainActivity 上看起来如何?
    • 如果您遵循 Android Studio 中的 quickfix 建议,它实际上会为您创建方法。它看起来像 public void createMeme(String top,String bottom) {},或者本质上,就像接口定义一样,但有一个方法体。
    猜你喜欢
    • 2018-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 2015-12-17
    • 2015-08-22
    相关资源
    最近更新 更多