MainActivity不是封闭类

时间:2016-01-15 07:45:04

标签: android android-studio parse-platform

我正在使用解析,而且我是Android开发的初学者。单击login_button时我需要启动MainActivity。但是当我将我的MainActivity类添加到LoginSampleActivity中的解析登录构建器时,它显示,' MainActivity不是一个封闭的类'错误。

这是我的MainActivity

public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {


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

这是LoginSampleActivity

public class LoginSampleActivity extends Activity{

这是我的按钮点击事件

loginOrLogoutButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            if (currentUser != null) {
                ParseUser.logOut();
                currentUser = null;
                showProfileLoggedOut();
            } else {
                Toast.makeText(getBaseContext(),"Login",Toast.LENGTH_SHORT).show();
                ParseLoginBuilder loginBuilder = new ParseLoginBuilder(
                        MainActivity.this);
                startActivityForResult(loginBuilder.build(), LOGIN_REQUEST);
            }
        }
    });

这是我的清单文件

<activity
        android:name=".LoginSampleActivity"
        android:launchMode="singleTop">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".MainActivity"
        android:label="@string/title_activity_main"
        android:launchMode="singleTop"
        android:theme="@style/AppTheme.NoActionBar">

    </activity>

由于

3 个答案:

答案 0 :(得分:3)

它不是名称“MainActivity或FirstActivity”。检查清单文件。

    <activity
        android:name=".first"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.**LAUNCHER**" />
        </intent-filter>
    </activity>
    活动标签中的
  1. ,类别“.LAUNCHER”定义了要开始的第一页。
  2. 检查您的清单,哪个活动的类别为“启动器”。
  3. 在该活动上创建登录按钮,并创建另一个要传递的类。

答案 1 :(得分:1)

问题出在以下几行:

ParseLoginBuilder loginBuilder = new ParseLoginBuilder(
                    MainActivity.this);

而不是 MainActivity.this 我想你想写 MainActivity.class

编译错误表示 LoginSampleActivity 未扩展 MainActivity ,因此您无法在 LoginSampleActivity中使用 MainActivity.this

答案 2 :(得分:0)

感谢您的回答。我找到了解决问题的方法。问题出在ParseLoginBuilder类中。因此,我创建了一个名为MainActivityBuider的新类,并将build()方法添加到该类中。现在它正在运作。再次感谢您的回答。 @Marek @Rathna